16得票2回答
在Delphi 2010中向TFileStream写入字符串

我有一段 Delphi 2007 代码看起来像这样:procedure WriteString(Stream: TFileStream; var SourceBuffer: PChar; s: string); begin StrPCopy(SourceBuffer,s); Strea...

16得票5回答
CharInSet函数无法使用非英文字母吗?

我已将一个应用程序从Delphi 2007更新到Delphi 2010,一切都很顺利,除了一个被编译通过但无法正常工作的语句:If Edit1.Text[1] in ['S','س'] then ShowMessage('Found') else ShowMessage('Not F...

16得票1回答
如何增加外部调试器可显示的字符串大小?

我再次编写一个外部调试器可视化工具,并遇到了一个问题。调试器可视化工具返回的字符串似乎有大小限制。 Delphi 2010附带的TStrings调试器可视化工具有4K的限制。在Embarcadero新闻组发布的一个问题的回复中,Ewe Schuster 回答说:“你可以稍微增加缓冲区的大小,...

16得票3回答
一个可以正确处理PNG透明度的按钮控件及替代TBitmap的代码实现,无需编写预混合代码。

Delphi 2010的TSpeedButtons似乎无法正确支持PNG透明度,因为Glyph属性在内部使用TBitmap,而TBitmap仅适用于位图,不能正确支持PNG透明度,因此TSpeedButton.Glyph也无法支持透明度。更新:实际问题是我有一些外部组件(Developer E...

15得票6回答
向 TObjectDictionary 中两次添加相同的对象会释放该对象。

看看这段代码:dic:=TObjectDictionary<Integer, TObject>.Create([doOwnsValues]); testObject:=TObject.Create; dic.AddOrSetValue(1,testObject); dic.AddO...

15得票12回答
不区分大小写的Pos

在D2010(Unicode)中是否有类似于Pos的不区分大小写的可比较函数? 我知道我可以使用Pos(AnsiUpperCase(FindString), AnsiUpperCase(SourceString)),但是这会通过每次调用函数将字符串转换为大写形式而增加很多处理时间。 例如,...

15得票4回答
Delphi XE3生成的EXE文件大小比Delphi 7大25倍。

作为一个测试,我决定在Delphi 4、5、6、7、2005、2010和XE3中创建一个简单的“Hello world”应用程序。该应用程序仅包含一个TForm以及一个TButton并带有一个OnClick事件,该事件会调用ShowMessage('Hello world')。 下面是每个最...

14得票1回答
代理服务器使用Indy

我刚开始使用Indy,并希望用它构建一个简单的代理服务器。这是一个相当大的库,我不知道从哪里开始。当客户端连接到服务器时,OnExecute会启动并将客户端连接作为参数(AContext.Connection)接收。 我想要实现以下功能:[client connection] := ACont...

14得票5回答
Delphi预构建事件未在编译之前执行

我正在忙于自动化我们的构建过程,以包含svn修订号。我们正在使用Delphi 2010。 我添加了一个预构建事件,调用一个批处理文件,将(从.svn目录中的entries文件中读取的)svn修订号和指定版本号注入到与我的项目一起编译的aVersionInfo.rc中。预构建事件如下: cal...

14得票1回答
如何在Delphi 2010中使用RTTI创建一个对象实例?

众所周知,当我们调用类的构造函数时,就像这样:instance := TSomeClass.Create; Delphi编译器实际上执行以下操作: 调用静态的NewInstance方法来分配内存并初始化内存布局。 调用构造方法来执行类的初始化。 调用AfterConstruction方法。...