2009-08-26 41 views

回答

5

刪除是一個「編譯器魔術」功能。編譯器使用其基本數據類型的知識來正確處理操作。對於大多數陣列,它可以簡單地將您在代碼中寫入的信息轉換爲實際偏移量和需要刪除的字節數,然後將其轉換爲_Delete彙編程序。對於WideStrings,就像Alexander指出的那樣,它有一個特殊的_WStrDelete例程。底線:如果您可以將數組或字符串傳遞給Delete並編譯,它應該運行得很好。

+0

哈哈,我只是喜歡這個答案 - 特別是德爾福從字符串到WideString的隱式轉換,只要沒有重載版本的功能... –

5

像刪除,插入,長度等內部RTL函數對Ansi和Wide字符串都起作用。

例如,將WideString上的Delete調用轉換爲WStrDelete調用(請參閱System.pas)。

+0

你確定嗎?在德爾福2006年它只是一個彙編函數... –

+1

是的,我很確定它 - 現在在D2006中檢查它。刪除字符串(AnsiString)被轉換爲LStrDelete調用,並且用於WideString的Delete被轉換爲WStrDelete調用(請參閱CPU視圖)。 – Alex

+0

是的,好的,我注意到在此期間,但無論如何感謝。 –