2012-04-22 170 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