2009-07-07 52 views

回答

2

Delphi 2009添加了一個名爲RawByteString的新字符串類型。它被定義爲:

type 
    RawByteString = type AnsiString($ffff); 

如果您需要保存的二進制數據來作爲PAnsiString,你可以用這個。您應該能夠像以前使用AnsiString一樣使用RawByteString。

但是,推薦的長期解決方案仍然是將您的程序轉換爲Unicode。

+0

你必須小心RawByteString。就像其他字符串類型一樣,RawByteString仍然有一個與其關聯的代碼頁,並在分配Unicode字符串時使用該代碼頁。唯一的區別是RawByteString可以在運行時動態改變代碼頁,而其他字符串類型則不會。 RawByteString不能用作獨立的字符串類型。它的主要(也是唯一的推薦)用在函數參數中,它們不關心源Ansi字符數據使用什麼代碼頁。 – 2009-07-13 22:16:51

2

沒有辦法將一個PAnsiChar「投」到PChar。在Delphi 2009中,PChar是Unicode。Ansi數據不能簡單地轉換爲Unicode,反之亦然。您必須執行實際的數據轉換。如果您有一個PAnsiChar指向某些數據的指針,並且希望將數據放入一個Unicode字符串中,則首先將PAnsiChar數據分配給AnsiString,然後根據需要將AnsiString分配給Unicode字符串。同樣,如果您需要將Unicode字符串傳遞給PAnsiChar,則必須先將數據分配給AnsiString。有關Embarcadero'sTeamB's博客網站的文章涉及Delphi 2009遷移問題。

+0

我正在跳過那裏有一個內置函數來做到這一點,我失蹤了。現在我有自己的函數庫來完成轉換。 – 2009-07-08 02:15:26