我正在将一些旧代码转换为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(两个字节)中。编译器可以很好地做到这一点,并且足够聪明,不会丢失数据,但是警告是为了让您知道已经进行了这种转换。