Delphi 如何以及在何处覆盖默认字符串类型?
我想澄清一下,并将默认的Delphi 如何以及在何处覆盖默认字符串类型?,delphi,Delphi,我想澄清一下,并将默认的string类型声明/覆盖为宽字符串或ansi字符串 例如,string=WideString在Delphi 2009下 如何以及在何处可以声明/设置/更改默认字符串类型,以便整个项目和IDE保证它已被专门覆盖?如果使用Delphi 2009或更高版本。在早期版本中,它被定义为AnsiString 无法重新声明字符串类型 哪里是声明/设置此项的最佳位置,因此整个项目和 IDE保证默认字符串是 声明/覆盖 没有字符串是Delphi中的关键字,不能重新声明 在Unicode
string
类型声明/覆盖为宽字符串或ansi字符串
例如,string=WideString代码>在Delphi 2009下
如何以及在何处可以声明/设置/更改默认字符串类型,以便整个项目和IDE保证它已被专门覆盖?如果使用Delphi 2009或更高版本。在早期版本中,它被定义为AnsiString
无法重新声明字符串
类型
哪里是声明/设置此项的最佳位置,因此整个项目和
IDE保证默认字符串是
声明/覆盖
没有<代码>字符串
是Delphi中的关键字,不能重新声明
在Unicode Delphi版本中,string
是UnicodeString
的别名,在早期版本中是AnsiString
的别名
WideString
与COM BSTR
类型兼容,它不是像string
、AnsiString
或UnicodeString
无论您使用哪种Delphi版本(Unicode前版本或Unicode),使用通用
string
类型都是首选
但在需要特定且代码取决于确切类型的地方,请使用AnsiString
或UnicodeString
,即使在特定的Delphi版本中它们可能映射到通用string
- 在Unicode Delphi之前版本中使用
,以确保不同版本之间的兼容性和代码的正确性,这取决于变量是AnsiString
AnsiString
- 在Unicode Delphi版本中使用
,当代码正确性取决于变量为UnicodeString
UnicodeString
Integer=string
,而不是string=Integer
。因为string
是关键字而Integer
不是关键字。因此,如果出现在现代Delphi中,您根本无法重新声明string
,而只能重新声明一些宏。@DalijaPrasnikar您仍然可以使用Integer=string取笑您的同事代码>;)玩得开心。不,它不是引用计数。@BenjaminWeiss,但别担心,编译器会发出正确的代码,在字符串超出范围时自动释放字符串。区别几乎总是在赋值时生成原始字符串的新副本,除非传入使用const/var关键字的方法。@BenjaminWeiss如果是,则没有必要引入Unicode解构类型。好像没有Unicodehar和Punicodehar类型。全新UnicodeString类型的存在恰恰意味着WideString是一个不同的野兽。无论您选择哪个Delphi版本
-只是吹毛求疵,但在某些Delphi版本中,根据编译器选项,字符串也可能是短字符串:-)@Arioch'The yep,您在吹毛求疵;-)我完全忘记了这一点,但该编译器指令在任何Unicode Delphi版本中都不起作用。我不认为这在这个时候是真的相关:)