delphi声明ansi字符串的大小

non*_*one 3 arrays delphi ansi delphi-2009

很容易定义一个大小为3的字符串(在旧的delphi代码中)

st:string[3];
Run Code Online (Sandbox Code Playgroud)

现在,我们希望将代码移至ansi

st:ansiString[3];
Run Code Online (Sandbox Code Playgroud)

不行!

并为adcanced oem类型

st:oemString[3]; 
Run Code Online (Sandbox Code Playgroud)

同样的问题,在哪里

type
  OemString = Type AnsiString(CP_OEMCP);
Run Code Online (Sandbox Code Playgroud)

怎么可以声明一个固定长度的ansi字符串和新的oem类型?

更新:我知道它会创建一个固定长度的字符串.它是防止错误的软件设计的一部分,对程序至关重要.

Too*_*the 5

您不需要定义AnsiString的大小.

符号

string[3] 
Run Code Online (Sandbox Code Playgroud)

用于Pascal(和Delphi 1)使用的短字符串,它主要用于遗留目的.

短字符串可以是1到255个字节长.第一个("隐藏")字节包含长度.

AnsiString是指向字符缓冲区的指针(0终止).它有一些内部魔法,如引用计数.并且您可以安全地将字符添加到现有字符串,因为编译器将为您处理所有令人讨厌的细节.

UnicodeStrings与AnsiStrings类似,但使用unicode字符(在本例中为2个字节).现在默认字符串(Delphi 2009)映射到UnicodeString.

AnsiString类型有一个构造来添加代码页(用于定义127以上的字符),因此CP_OEMCP:

OemString = Type AnsiString(CP_OEMCP);
Run Code Online (Sandbox Code Playgroud)