19得票3回答
如何在Delphi 2009中按键值字母顺序列出TDictionary?

我该如何使用TEnumerator按键排序遍历我的TDictionary? 我有类似以下的代码: var Dic: TDictionary<string, string>; Enum: TPair<string, string>; begi...

19得票2回答
让Allen Bauer的TMulticastEvent<T>正常工作

我一直在研究Allen Bauer的通用多播事件调度器代码(请参见他关于此的博客文章here)。他提供的代码足够让我想要使用它,但不幸的是他没有发布完整的源代码。我试图让它工作,但我的汇编技能非常有限。 我的问题出现在InternalSetDispatcher方法上。天真的方法是使用与其他I...

18得票6回答
如何在Delphi中将接口转换为对象

在Delphi 2009中,我有一个对 IInterface 的引用,我想将其转换为底层的 TObject 在Delphi 2009中使用 TObject(IInterface) 显然不起作用(虽然在Delphi 2010中可以使用) 我的搜索结果指向了一个应该能解决问题的函数,但它对我不...

18得票5回答
为什么CharInSet比Case语句更快?

我感到困惑。在CodeRage上,Marco Cantu说CharInSet很慢,建议我尝试使用Case语句。我在解析器中这样做,并使用AQTime检查加速效果。结果发现Case语句要慢得多。 执行以下代码4,894,539次: while not CharInSet (P^, [' ',...

18得票3回答
为什么基于TComponent的接口实现会导致内存泄漏?

这段 Delphi 代码将展示一个 TMyImplementation 实例的内存泄漏:program LeakTest; uses Classes; type MyInterface = interface end; TMyImplementation = class(...

18得票4回答
货币值与常量值比较的结果奇怪

当使用Delphi 2009进行编译并运行时,这个控制台应用程序会输出“strange”。 在“小于”运算符两侧的值相等的情况下,代码的行为却表现得好像它们不相等。我该怎么做才能避免这个问题?program Project5; {$APPTYPE CONSOLE} var C: Cur...

18得票7回答
最佳实践:保持TCP/IP连接开启还是在每次传输后关闭?

我的服务器应用程序使用TIdTCPServer,多个客户端应用程序使用TIdTCPClients连接到服务器(所有计算机都在同一个局域网中)。 一些客户端只需要每隔几分钟联系服务器一次,另一些每秒钟要联系一次,而其中一个客户端大约每秒钟要联系20次。 如果我保持客户端和服务器之间的连接打开...

18得票4回答
Delphi中的抽象类

我正在使用一个包含许多抽象类的组件套件。现在我想应用多态性,但是当我创建对象时遇到了“抽象类”错误。 如果我不需要使用的话,是否应该覆盖所有虚拟方法?有没有解决方法或变通之策?

17得票1回答
Delphi 2009中CreateProcess函数出现访问冲突问题

我在我的程序中有以下代码://Code if not CreateProcess(nil, NonConstCmd, nil, nil, True, NORMAL_PRIORITY_CLASS or CREATE_NEW_PROCESS_GROUP, nil, PCh, SI, P)...

17得票1回答
Delphi 2009中Indy 10逐步升级指南

有人能帮忙详细说明如何卸载Indy 10并安装最新版本吗?我在http://indy.fulgan.com/ZIP/IndyTiburon.zip找到了它。 有一个类似的问题,但没有令人满意的答案,只有一些用户评论,那不是一步一步的指南。 为什么没有工具可以做到这点呢?