小编Sha*_*ews的帖子

Delphi:表单可以自行释放吗?

我有一个表单,用于显示一些信息几秒钟.表单可以自由释放吗?我可以在构造函数中启动一个计时器,然后在timer-event中调用self.free吗?或者这可能会导致麻烦吗?

delphi self-destruction

13
推荐指数
2
解决办法
7314
查看次数

Ruby Koan:test_nil_is_an_object

我最近尝试用这个工具磨练我的rails技能:

http://github.com/edgecase/ruby_koans

但我在通过一些测试时遇到了麻烦.此外,我不确定我是否正确地做了一些事情,因为目标只是通过测试,有很多方法可以通过它,我可能正在做一些不符合标准的事情.

有没有办法确认我做得对吗?

一个具体的例子:

在about_nil,

 def test_nil_is_an_object
   assert_equal __, nil.is_a?(Object), "Unlike NULL in other languages"
 end
Run Code Online (Sandbox Code Playgroud)

所以它告诉我检查第二个子句是否等于一个对象(所以我可以说nil是一个对象)或者只是assert_equal true, nil.is_a?(Object)因为该语句是真的而放?

和下一个测试:

def test_you_dont_get_null_pointer_errors_when_calling_methods_on_nil
  # What happens when you call a method that doesn't exist.  The
  # following begin/rescue/end code block captures the exception and
  # make some assertions about it.
  begin
    nil.some_method_nil_doesnt_know_about
  rescue Exception => ex
    # What exception has been caught?
    assert_equal __, ex.class

    # What message was attached to the exception?
    # (HINT: replace __ with …
Run Code Online (Sandbox Code Playgroud)

ruby

13
推荐指数
2
解决办法
1万
查看次数

您如何登录桌面应用程序以提高稳定性?

我已经开始在我的Delphi应用程序中使用SmartInspect,因为我的用户遇到了我无法在我的机器上重现的错误/问题.当我对问题有一个总体概念时,我将在几个特定的​​地方监控应用程序,以确认哪些是有效的或哪些无效.

当bug没有明显的原因时,我感到迷茫.我不知道从哪里开始登录以缩小问题范围.是否有使用记录器的常用技术或最佳实践?

SmartInspect似乎非常强大,但我不知道要记录什么或如何组织我的日志,因此数据对于捕获错误是有意义和有用的.

注意:我正在使用SmartInspect,但我认为答案应该适用于任何日志包.

delphi logging desktop-application

13
推荐指数
1
解决办法
402
查看次数

用于调试远程计算机上的问题的技术和工具?

用户一直在报告我无法在我的机器上重现的问题/崩溃/错误.我发现这些问题很难解决.

我已经开始使用EurekaLog(太棒了!)和SmartInspect.这两种工具都有很大帮助,但我仍然发现很难发现一些问题.

我刚刚购买了David Agans的Debugging(等待它到达).

是否还有其他特定于Delphi的工具或技术有助于捕捉这些难以找到的远程问题?我发现难以追查的问题是那些不会引起例外或有明确原因的问题.EurekaLog捕获异常,一旦我有理论检查,SmartInspect就相当不错了.但在某些情况下,这是一个看似随机的崩溃,有几千行代码可能有问题.如何缩小根本原因?

delphi debugging

12
推荐指数
3
解决办法
1731
查看次数

具有"线程安全"读/写操作的Delphi数据类型列表?

'boolean'变量是否可以从任何线程读取和写入线程安全?我已经看到一些新闻组的引用说它们是.是否有其他数据类型?(列举的类型,也可能是短的内容?)

有一个可以安全地从任何线程和另一个列表中读取的所有数据类型的列表将是很好的,这些列表也可以安全地写入任何线程,而不必求助于各种同步方法.

delphi atomic thread-safety

10
推荐指数
3
解决办法
4954
查看次数

增加动态数组的大小会发生什么?

我想了解当动态数组的大小增加时会发生什么.

到目前为止我的理解:

  • 现有的数组元素将保持不变.
  • 新数组元素初始化为0
  • 所有数组元素在内存中都是连续的.

当数组大小增加时,是将额外的内存添加到现有的内存块上,还是将现有的元素复制到一个全新的内存块?

更改动态数组的大小是否会影响引用现有数组元素的指针?

谢谢,

[编辑]错误的假设被打破了.(新数组元素初始化为0)

delphi

9
推荐指数
1
解决办法
782
查看次数

FireMonkey控件不能平滑地设置动画

背景

我使用一些FireMonkey控件创建了一个GUI.

  • 一些控件是动画的,它们的外观会自动更新.
  • 某些控件仅响应用户交互(滑块等)而更新.

问题

与用户控件的交互可防止更新动画控件,从而导致不稳定的不连续动画.

毛刺动画的视频

上面视频中的动画控件由TTimer组件驱动.使用FireMonkey的动画组件时问题仍然存在.

调查

滑块控件在调整时调用Repaint().平滑调整滑块将生成密集的Repaint()调用流,阻止其他控件更新.

该怎么办?

在一个控件不断更新时冻结动画不适合我的应用程序.我的第一个想法是交换Repaint()调用类似于VCL Invalidate()方法,但FireMonkey没有任何可比的AFAIK.

这个问题有一个很好的解决方法吗?

delphi firemonkey

9
推荐指数
1
解决办法
3161
查看次数

如何使屏幕阅读器可以看到自定义GUI控件?

我正在努力改善我的Delphi应用程序对视障用户的可访问性.我的应用程序使用许多自定义GUI组件 他们大多来自TWinControl或TGraphicControl.

使用NVDA进行测试时,我的自定义组件似乎不可见.例如,当鼠标悬停在常规Delphi VCL控件(如按钮或表单)上时,NVDA将通过读取控件的名称(或其他详细信息)来做出响应.相比之下,当我将鼠标悬停在任何自定义控件上时,NVDA根本没有响应.

如何使我的自定义组件对NVDA和其他屏幕阅读软件可见?

delphi accessibility screen-readers delphi-xe2 nvda

9
推荐指数
1
解决办法
943
查看次数

字符串散列函数将在Delphi和PHP中产生相同的结果

我需要一个字符串散列函数,它将在Delphi XE2和PHP中产生相同的结果.我有什么选择?将优先考虑免费,简单且加密安全的解决方案.

php delphi hash delphi-xe2

8
推荐指数
2
解决办法
1406
查看次数

用于开源Delphi软件包的项目选项有哪些?

我写了一些我想在GitHub上分享的Delphi代码.所有代码都包含在运行时和设计时包中.每个项目都有许多"项目选项".(输出目录,搜索路径,编译选项等),我已经成功找到了最适合我的情况下工作良好,但阅读其他Q&由于这里明明有多个一些默认选项方面 工作.

应该使用哪些项目选项来将开源软件包轻松地整合到单个项目中?

德尔福项目选项

我最近开始使用NodeJS.NPM包管理器使得在项目中使用第三方包非常容易.在命令行上使用一个简单命令安装软件包.包将自动安装任何所需的依赖项.

PS:如果您想添加额外的东西,请随意编辑此问题.

delphi open-source project-organization delphi-xe2

8
推荐指数
1
解决办法
627
查看次数