2012-04-22 79 views
4

我一直在使用IDA中的一些德尔福组件。德尔福组装电话

我注意到很多系统调用,我不明白,并且无法找到任何关于它们的文档。例如:我注意到了很多对未知函数LStrClr(void *)的调用。

我能找到的最好的是这个网站http://www.delphibasics.co.uk/ByLetter.asp?Letter=A 但它缺少很多函数调用,包括LStrClr。

非常感谢您的回复, Michael Engstler。

回答

7

LStrClr表示长字符串清除。它习惯于清除长字符串变量。换句话说,当你写:

s := ''; 

那么编译器会生成对运行时支持功能_LStrClr的调用。在Unicode Delphi中,它将是_UStrClr,其中U表示UnicodeString而不是AnsiString

没有官方文档,因为它是所有私人实施细节。但是,Delphi RTL有源代码。如果你提到这一点,这种电话很容易理解。

+0

@MichaelEngstler - 你没有提到你使用的Delphi版本。这些低级别的调用(“实现细节”)可能会也可能会在不同的版本之间变化很大(例如8位/ Win32 Borland Delphi 7和原生Unicode Embarcadero XE2)。 – paulsm4 2012-04-22 18:20:23

+0

'_LStrXXX()'函数总是与'AnsiString'(以及'D2009 +中基于AnsiString'的类型,如'UTF8String'和'RawByteString')一起使用。自“AnsiString”首次推出以来,这并没有改变。 'UnicodeString'使用'_UStrXXX()'函数,'WideString'使用'_WStrXXX'函数。 32位和64位并没有什么区别。 – 2012-04-23 00:59:20