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

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

33得票8回答
在Delphi 2009中将TMemoryStream转换为字符串

在 Delphi 2009 之前,我们有以下代码:function MemoryStreamToString(M : TMemoryStream): String; var NewCapacity: Longint; begin if (M.Size = > 0) or ...

11得票5回答
关于转向多层 Delphi 架构的建议

我们有一个相对较大的应用程序,与Firebird紧密结合(存储过程、视图等)。现在我们收到了很多支持其他数据库的请求,我们也希望将许多功能从客户端移动到服务器端。 现在似乎是转向3(4)层架构的好时机。我们已经查看了DataSnap 2009和RemObjects SDK/DataAbstr...

11得票4回答
Delphi TThread.CurrentThread和EAccessViolation - 这是一个错误还是我的无能?

在Delphi 2009中,每当我在应用程序中使用TThread.CurrentThread时,当应用程序关闭时会出现以下错误消息: Exception EAccessViolation in module ntdll.dll at 0003DBBA. Access violation at...

12得票1回答
如何比较包含对象函数/过程的TFunc/TProc?

我们使用一个包含一些对象的函数列表 TList<TFunc<Boolean>>,现在想要再次删除其中的一些条目。但是它不起作用,因为很明显您无法可靠地比较这些引用对象 reference to ...。 以下是测试代码:program Project1; {$APPT...

8得票5回答
Delphi 7与2009(和2010)相比,记录大小

我在将Delphi 7的代码转换为2010时遇到了一个奇怪的问题。它与记录有关。下面定义的记录,在D7中大小为432字节,在D2009(和2010)中为496字节。我知道,一个简单的解决方案是将其设置为紧凑记录,那么所有版本都变成426字节......然而,我们存储了数据,并将记录流式传输,现...

104得票1回答
有没有一种编程方式可以判断FastMM是否释放了特定的内存块?

我正在尝试检测一块内存是否被释放。当然,管理器会通过对话框或日志文件告诉我,但如果我想将结果存储在数据库中怎么办?例如,我想在数据库表中有给定块分配的例程名称。 阅读FastMM文档后,我知道自从版本4.98以来,我们有可能被管理器通知内存分配、释放和重新分配发生的情况。例如,OnDebug...

8得票1回答
需要一个表单只停留在父级页面的顶部。

我有一个多窗口应用程序。我的主窗体是桌面的子窗体。我的应用程序可以创建其他窗体,这些窗体也成为桌面的子窗体。但是,有一种特殊情况,我的主窗体需要创建一个窗体,该窗体将始终保持在其上方。 我曾经做到了这一点……但是,如果我在应用程序中创建其他窗口,则此窗体似乎仍然保持在它们的上方! 所以基本...

8得票8回答
Delphi中处理超大XML文档的最快方法

我需要推荐在Delphi(我使用Delphi 2009)中使用什么来尽可能快地处理非常大的XML文件(例如100 MB)。 我需要输入XML,在程序中访问和更新其中的数据,然后再次导出修改后的XML。希望在快速的Windows机器上能够在几秒钟内完成输入和输出。 澄清一下。我预计将需要使用D...

40得票4回答
如何制作PNG资源?

我有一个表单,上面有一个大的TImage作为背景。问题在于,它直接以位图的形式存储在DFM中,占用约3 MB的空间。原始PNG文件大小约为250K。我想通过将PNG嵌入资源中来减少膨胀,并在OnCreate期间加载表单。现在,由于Delphi 2009包括PNG支持,我可以这样做,但我不知道如...