Delphi 2009 приведение к длине строки 2 - PullRequest
2 голосов
/ 15 марта 2011

, показывающий, как подавить предупреждение от компилятора о возможной потере данных,

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

, где st это строка [2], а str имеет более 2 символов.определяется как из str, возвращает новую строку, которая является подмножеством из 0, 2 мест.

Ответы [ 3 ]

5 голосов
/ 15 марта 2011

Это подавит предупреждение, но учтите, что основная проблема все еще существует: преобразование Unicode в AnsiString может привести к потере данных.

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

И не забывайте, что строки Delphi основаны на 1, первый символ в строке - 1, а не 0.

4 голосов
/ 15 марта 2011

Если вы просто напишите:

st := shortstring(str);

Компилятор сделает всю работу за вас.

Он обрезает содержимое str до максимальной длины st. Так что, если st определено как st: string[2];, то if извлечет только 2 первых символа str.

Но вы можете потерять символы, не закодированные в ascii, в str (не проблема, если она содержит только текст на английском языке).

0 голосов
/ 15 марта 2011

Вы используете неправильно, вы должны сделать:

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