delphi - 如何使固定长度的 Delphi 字符串使用宽字符?

标签 delphi delphi-2010 unicode-string widestring

在 Delphi 2010 下(也可能在 D2009 下),默认字符串类型是 UnicodeString。

但是如果我们声明...

const
 s  :string = 'Test';
 ss :string[4] = 'Test';

...那么第一个字符串 s 如果声明为 UnicodeString,但第二个字符串 ss 声明为 AnsiString!

我们可以检查一下:SizeOf(s[1]);将返回尺寸 2 和 SizeOf(ss[1]) ;将返回尺寸 1。

如果我声明...

var
  s  :string;
  ss :string[4];

...比我希望的 ss 也是 UnicodeString 类型。

  1. 我如何告诉 Delphi 2010 这两个字符串都应该是 UnicodeString 类型?
  2. 我还能如何声明 ss 拥有四个 WideChar?编译器不会接受类型声明 WideString[4]UnicodeString[4] .
  3. 对同一个类型名称(字符串)使用两个不同编译器声明的目的是什么?

最佳答案

这个问题的答案在于,string[n](一种 ShortString)现在被视为旧类型。 Embarcadero 决定不将 ShortString 转换为支持 Unicode。由于引入了长字符串,如果我没记错的话,在 Delphi 2 中,这对我来说似乎是一个合理的决定。

如果您确实想要固定长度的 WideChar 数组,那么您可以简单地声明 array [1..n] of char

关于delphi - 如何使固定长度的 Delphi 字符串使用宽字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4794285/

相关文章:

delphi - 如果可能的话如何调试delphi 2006 clientDataSet

delphi - 如何将方法的嵌套过程作为参数传递?

delphi - 属性不继承?

delphi - 将两个字节合并为 WideChar

java - 为什么我的 java String 的长度比它生成的 byte[] 数组短?

由于项目的 DSK 文件取自另一台计算机,Delphi 项目具有 APPCRASH?

delphi - Firemonkey 中 GetTickCount 是在哪里声明的?

delphi - 如何让这个闪屏显示3秒?

ios - 将 U+ unicode 转换为 NSString

mysql - 如何使用sql查询在delphi中搜索ado数据库中的字段?