我正在将一些旧代码转换为Delphi 2010。

有很多旧的ShortString,例如string [25]

为什么执行以下作业:

type
  S: String;
  ShortS: String[25];

...
S := ShortS;

使编译器生成此警告:
W1057 Implicit string cast from 'ShortString' to 'string'.

这里没有发生数据丢失。在什么情况下此警告对我有帮助?

谢谢!

汤姆

最佳答案

ShortString类型没有更改。实际上,它仍然是AnsiChar的数组。

通过将其分配给字符串类型,您将获得一组AnsiChars(一个字节)并将其放入一组WideChars(两个字节)中。编译器可以很好地做到这一点,并且足够聪明,不会丢失数据,但是警告是为了让您知道已经进行了这种转换。

10-01 20:44