[英]Difference function Char / Chr in Delphi 2007 and XE3
我正在使用帶有參數130的Char和Chr函數,並且在Delphi 2007 e XE3中的行為有所不同。
Delphi 2007:Char(130)或Chr(130) - 結果:逗號
Delphi XE3:Char(130)或Chr(130)-結果:#$ 0082
我使用AnsiChar解決問題(130)。
我的問題是如果我在使用AnsiChar時遇到問題。 我應該在整個項目中通過AnsiChar更改Chr / Char嗎?
謝謝
這兩個稍有不同:
在Delphi的Unicode之前和之后版本中,您可以互換使用Char()
和Chr()
版本。 但是,結果因您使用的Delphi版本而異。
對於Unicode前Delphi, Char
是一個8位ANSI字符。 對於后Unicode Delphi, Char
是一個16位UTF-16字符。
確切的解決方法取決於您要實現的目標。 如果你想把頭埋在沙子里,並假裝不存在Unicode字符,那么也許你想用AnsiChar
替換你對Char
所有使用。 而且,您還希望希望您的程序只能在具有將字符130映射到該字符的語言環境的計算機上運行。 請注意,並非所有Windows ANSI語言環境都這樣做。
但是,我懷疑對問題的正確解決方案,無論是什么,都將采用Unicode,並對該字符使用UTF-16編碼。 這是單低-9報價標記U + 201A 。 在Unicode Delphi中這樣寫:
Chr($201A)
或者像這樣:
#$201A
或者像這樣:
'‚'
另一方面,也許你真的想要一個逗號,注意AnsiChar(130)
不是逗號,但實際上是一個引號。
如果你想要一個逗號( COMMA U + 002C ),這很容易:
Chr($002C)
要么
#$002C
要么
','
一些需要閱讀的內容: MarcoCantù的Delphi和Unicode 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.