我在這裏有一個案例,我將從Delphi 7遷移到delphi 2011 XE,並且令我驚訝的是許多組件會因ansistrings而出現問題,在delphi xe中它們看起來像日文/中文字符,現在我使用的單位是一個PCSC連接器,似乎從原始開發人員中斷/放棄。Delphi Ansistrings
基本上是我要的是用盡可能少改動原來的代碼儘可能再次讀取字符串一個簡單的方法..
還是否有任何好的教程在那裏如何makae組件2009年AnsiString類型準備和更新會幫助我也
我在這裏有一個案例,我將從Delphi 7遷移到delphi 2011 XE,並且令我驚訝的是許多組件會因ansistrings而出現問題,在delphi xe中它們看起來像日文/中文字符,現在我使用的單位是一個PCSC連接器,似乎從原始開發人員中斷/放棄。Delphi Ansistrings
基本上是我要的是用盡可能少改動原來的代碼儘可能再次讀取字符串一個簡單的方法..
還是否有任何好的教程在那裏如何makae組件2009年AnsiString類型準備和更新會幫助我也
@Plastkort,Delphi> = 2009完全能夠讀取和處理AnsiString。如果以某種方式將ANSI數據強制轉換爲Unicode,可能通過硬性轉換指向PChar的指針,則只會得到無意義的字符。
如果我不得不將其他人的代碼轉換爲Unicode,我會先搜索PChar,Char和String,然後專門查看其他類型難以轉換爲這些類型的地方。那是因爲這些類型改變了含義:在非Unicode delphi中CHAR是1個字節,現在是2個字節。
轉換本身並不是很困難,您只需要瞭解您面臨的問題,並且您需要對正在轉換的代碼有很好的理解。而且這是很多工作,特別是在處理那些「用字符串表達聰明的東西」的代碼時。
感謝所有的評論和反饋:) – Plastkort 2011-02-25 13:38:54
德爾福(之前德爾福2009年我認爲)的重大變化是別名字符串類型;字符串,Char,PChar等,其中2009年的prios是ANSI字符串類型,現在都是WideChar類型。
所以
Type | Delphi 6,7 | Delphi 2009, XE
-------+------------+----------------
string | AnsiString | UnicodeString
char | AnsiChar | WideChar
pchar | PAnsiChar | PWideChar
從安西德爾福移植到Unicode德爾福最簡單的方法是一個全局搜索和混疊字符串類型,與明確的8個ANSI equivlents替換它們替換(即更換所有的字符串AnsiString,PChar與PAnsiChar等)
這應該讓你90%的方式。
更新 閱讀評論我的回答後the article referenced by @O.D 我想建議硬着頭皮去與Unicode是明智的選擇。
我想推薦相反。接受對Unicode的更改並將您的應用程序更改爲使用Unicode正確工作。 – 2011-02-24 10:56:27
從長遠來看,這是可取的。但我的回答是基於Plastkort請求**最簡單的** wat讓他的應用程序再次工作。長期擁抱unicode是正確的答案,但我認爲它可能會在短期內做更多的工作。 – 2011-02-24 11:00:22
在我看來,這可能更容易擁抱! – 2011-02-24 11:03:52
我不明白這個問題。您能否詳細解釋一些涉及的步驟? – 2011-02-24 10:45:04
這可能會有所幫助http://edn.embarcadero.com/article/38980 – 2011-02-24 10:53:26