delphi声明ansi字符串的大小
|
轻松定义大小为3的字符串(在旧的delphi代码中)
st:string[3];
现在,我们希望将代码移至ansi
st:ansiString[3];
将无法正常工作!
和高级OEM类型
st:oemString[3];
同样的问题,在哪里
type
OemString = Type AnsiString(CP_OEMCP);
如何声明固定长度的ansi字符串和新的oem类型?
更新:我知道它将创建一个固定长度的字符串。它是软件设计的一部分,可以防止错误,并且对于程序至关重要。
没有找到相关结果
已邀请:
5 个回复
磐剩
用于Pascal(和Delphi 1)使用的短字符串,并且主要保留用于传统目的。 短字符串的长度可以为1到255个字节。第一个(\“ hidden \”)字节包含长度。 AnsiString是指向字符缓冲区的指针(0终止)。它具有一些内部魔术,例如引用计数。而且您可以安全地将字符添加到现有字符串中,因为编译器将为您处理所有令人讨厌的细节。 UnicodeStrings与AnsiStrings类似,但是具有Unicode字符(在这种情况下为2个字节)。现在,默认字符串(Delphi 2009)映射到UnicodeString。 AnsiString类型具有构造以添加代码页(用于定义127以上的字符),从而添加CP_OEMCP:
秃拳割
从Delphi 2009开始,我们将始终使用当前的Ansi代码页/字符集创建固定长度的“短字符串”。 但是,这样的短字符串与所谓的“ 7”并不相同。没有短字符串的代码页。由于没有短字符串的引用计数。 代码页仅适用于
类型,它不是固定长度的,而是可变长度的,并且引用计数,因此与than9ѭ定义的短字符串完全不同。 根据设计,您不能只混合
和
类型声明。两者都称为“字符串”,但类型多样。 这是ѭ10的映射
这是
或
类型的内存映射:
这是
布局:
因此,如果
类型和
类型之间存在某些相似之处,则
类型将完全不同,并且不能随意混合。
旦彤
席陋临拈
嘘伪