arrays - delphi声明ansi字符串的大小

标签 arrays delphi delphi-2009 ansi

很容易定义一个大小为 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/

相关文章:

arrays - Bash 脚本数组

javascript - Lodash:过滤对象数组并检查是否为空

delphi - Firebird TIBQuery 插入并返回 ... INTO

Java数组/二维数组用户输入和显示

python - 将字符串转换为单词数组 - Python

delphi - 如何更改 TPageControl 上标签的方向?

multithreading - 如何实现使用最少资源定期检查某些内容的线程?

delphi - delphi中的访问冲突

delphi - ElevateDB 关系模型的注意事项

delphi - delphi XE中如何读取文件内容到字符串