了解如何抑制编译器发出的可能导致数据丢失的警告
st:= copy(str,0,2);
其中st是string [2],str有2个以上的字符。
并且复制被定义为从str返回一个新字符串,该字符串是0,2个位置的子集。
答案 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);