9得票2回答
我该如何在Delphi 2006或更早版本的可执行文件上启用DEP/NX和ASLR?

Delphi 2007(及更高版本)支持以下三种技术之一启用DEP和ASLR: 在使用dcc32编译时添加命令行开关-dynamicbase 在源代码中添加预处理命令{$DYNAMICBASE ON} 手动将PE头文件中的位设置为{$SETPEOPTFLAGS $40} 我希望能够在D...

9得票5回答
TVirtualStringTree - 重置非可视节点和内存消耗

我有一个应用程序,可以从二进制日志文件中加载记录,并将它们显示在虚拟 TListView 中。文件中可能有数百万条记录,并且显示可以由用户过滤,因此我不会一次性加载所有记录到内存中,而且 ListView 的项索引与文件记录偏移量并不是一对一的关系(例如列表项 1 可能是文件记录 100)。我...

8得票1回答
理解TCriticalSection和Synchronize

我希望在这里确认我是否正确理解了TCriticalSection和Synchronize的操作方式。 据我所知,Synchronize使用SendMessage(更新:或者至少在旧版本的VCL中使用它,如下面的几条评论所述),它会暂停当前正在执行的线程(以及任何其他线程),而不像PostMe...

8得票1回答
是否可能知道表单是通过Show()还是ShowModal()显示的?

我的环境: C++ Builder XE4 FormB是否能够知道它是通过Show()还是ShowModal()显示的? 在FormA中: void __fastcall TFormA::Button1Click(TObject *Sender) { FormB->S...

8得票1回答
理解旧版C++代码的行为

我正在迁移一些旧的C++代码,最初是使用CodeGear C++Builder® 2009 Version 12.0.3170.16989编译的。 下面的代码是一个较大代码片段的最小版本,使用任何现代编译器都会输出-34。然而,在原始平台上它输出84: char Key[4]; K...

8得票3回答
如何“隐藏”虚假的“已声明但从未使用”的警告?

我正在使用Borland(又名“Embarcodegearland”)C++Builder 2007编译器,其中有一个小错误,即系统头文件中的某些static const项可能会导致虚假的"xyzzy已声明但从未使用"警告。 我正在尝试使我的代码100%无警告,因此需要一种掩盖这些特定警告的...

8得票2回答
.res文件需要放在源代码控制中吗?

在C++Builder XE5中,我的理解是二进制文件MyProject.res(由编译器在与.cbproj文件相同的目录中创建)包含程序图标和项目版本详细信息的编译版本(尽管我的似乎还包含XML清单)。但这些信息也包含在.cbproj文件和.ico files中;如果我删除.res文件,那么...

8得票3回答
将事件处理程序暴露给COM对象的VBScript用户

假设我有一个COM对象,用户可以通过类似以下的调用来访问它: Set s = CreateObject("Server") 我希望能够让用户为对象指定事件处理程序,像这样: Function ServerEvent MsgBox "Event handled" End Fun...

8得票2回答
将Unicode字符串转换为字符数组

我有一个带有列表框的表单,其中包含四个单词的行。当我点击某一行时,这些单词应该在四个不同的文本框中显示出来。 到目前为止,我已经让所有东西都运作良好,但我在字符转换方面遇到了问题。 列表框中的字符串是UnicodeString,但strtok使用的是char[]。 编译器告诉我它“无法将Un...

8得票3回答
如何使用SAFEARRAY的BSTR类型来显示VARIANT中的值

我正在开发一个COM对象库,其中有一个函数返回带有SAFEARRAY的VARIANT。如何显示来自此VARIANT实例的值并将其保存在TStringList中?我尝试过在网上搜索但没有找到明确的答案。 我尝试了以下方法但没有成功: Variant V; String mystr; Var...