很容易定义一个大小为 3 的字符串(在旧的 delphi 代码中)
st:string[3];
现在,我们希望将代码移至 ansi
st:ansiString[3];
不行!
以及高级 OEM 类型
st:oemString[3];
同样的问题,在哪里
type
OemString = Type AnsiString(CP_OEMCP);
如何声明固定长度的 ansi 字符串和新的 OEM 类型?
更新:我知道它将创建一个固定长度的字符串。它是软件设计的一部分,旨在防止错误,并且对于程序至关重要。
最佳答案
您不需要定义 AnsiString 的大小。
符号
string[3]
用于 Pascal(和 Delphi 1)使用的短字符串,它主要保留用于遗留目的。
短字符串的长度可以是 1 到 255 个字节。第一个(“隐藏”)字节包含长度。
AnsiString 是一个指向字符缓冲区的指针(0 终止)。它有一些内部魔力,比如引用计数。而且您可以安全地向现有字符串添加字符,因为编译器将为您处理所有令人讨厌的细节。
UnicodeStrings 类似于 AnsiStrings,但具有 unicode 字符(在本例中为 2 个字节)。默认字符串现在 (Delphi 2009) 映射到 UnicodeString。
AnsiString 类型有一个构造来添加代码页(用于定义 127 以上的字符),因此 CP_OEMCP:
OemString = Type AnsiString(CP_OEMCP);
关于arrays - delphi声明ansi字符串的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6176756/