Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > string' to 'AnsiString'


Автор: de_Nis 12.3.2011, 16:04
При компиляции исходников Д2007 в Д2009 в следующем участке кода:

Код

var
fName: AnsiString;

begin
TimeSeparator := '-';  //разделитель вместо сивола ":"
ShortDateFormat := 'yyyy_mm_dd';  
fName := 'Результат '+DateToStr(Now)+'_'+TimeToStr(Now)+'.txt';
...


получаю  Warning 
[DCC Warning] ..........: W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
на строчку
fName := 'Результат '+DateToStr(Now)+'_'+TimeToStr(Now)+'.txt';

Я перевел как "потенциальная потеря данных при неявном переходе от 'string' к 'AnsiString'
Думаю, это как-то связано с DateToStr(Now) или с TimeToStr(Now), или с тем и другим.
Как изменить код, чтобы не было этого предупреждения?

Автор: CODeRUS 12.3.2011, 16:46
используйте просто string, зачем вам Ansi?

Автор: БелАмор 12.3.2011, 21:38
О формировании строки...

Цитата(de_Nis @  12.3.2011,  16:04 Найти цитируемый пост)
TimeSeparator := '-';  //разделитель вместо сивола ":"
ShortDateFormat := 'yyyy_mm_dd';  
fName := 'Результат '+DateToStr(Now)+'_'+TimeToStr(Now)+'.txt';

Неудачное решение.
Всё можно сделать в одну строку, причём без переназначения форматов:

Код
  fName := FormatDateTime('yyyy_mm_dd__hh-nn-ss-zzz".txt"', Now);

Автор: de_Nis 14.3.2011, 09:49
Цитата(CODeRUS @  12.3.2011,  15:46 Найти цитируемый пост)
используйте просто string, зачем вам Ansi? 

Сделал, как рекомендовано. Помогло, Warning болше нет.

Цитата(БелАмор @  12.3.2011,  20:38 Найти цитируемый пост)
код Pascal/Delphi
1:  fName := FormatDateTime('yyyy_mm_dd__hh-nn-ss-zzz".txt"', Now);

Буду пробовать.
Всем спасибо. Закрываю тему.

Автор: Alexeis 14.3.2011, 10:31
AnsiString все же следует использовать в старом коде, где производиться побайтовое копирование или другие прямые операции с памятью строки в обход стандартных функций. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)