德尔福2009演员阵容长度为2

时间:2011-03-15 12:22:48

标签: string delphi casting delphi-2009

了解如何抑制编译器发出的可能导致数据丢失的警告

st:= copy(str,0,2);

其中st是string [2],str有2个以上的字符。

并且复制被定义为从str返回一个新字符串,该字符串是0,2个位置的子集。

3 个答案:

答案 0 :(得分:5)

这会抑制警告,但要注意底层问题仍然存在:从Unicode转换为AnsiString会导致数据丢失。

st := ShortString(Copy(str,1,2));

不要忘记Delphi stings是从1开始的,字符串中的第一个字符是1,而不是0。

答案 1 :(得分:4)

如果你只是写:

st := shortstring(str);

编译器将为您完成工作。

它会削减str内容以适应st的最大长度。因此,如果将st定义为st: string[2];,则只会检索str的前2个字符。

但是你可能会在str中删除非ascii编码的字符(如果它只包含英文文本则不会有问题)。

答案 2 :(得分:0)

你的使用是错误的:

st:= copy(str,1,2);