![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AnsiString to String в DelphiXE
AlekVolsk © (2011-04-12 23:37:00)Голова опухла настолько, что уже не соображаю, казалось бы, элементарное: как в DelphiXE тупо сконверировать из AnsiString в обычный String, который в DelphiXE в Unicode? B какой Unicode принят в DelphiXE по умолчанию: utf-8, utf-16 или какой-либо другой?
AlekVolsk (2011-04-13 14:04:00) [1]Блин, во всей группе проектов на 2 exe и 16 dll общей численностью более 40 тысяч строк при переходе с D2006 на DXE править пришлось менее 30 строк кода! А пока догнал, что к чему, 2 недели времени и нервов угробил!
Еще раз всем откликнувшимся огромное спасибо!
AlekVolsk (2011-04-13 13:49:00) [2]Все получилось.
Всем премного благодарен!
Приношу всем свои извинения за возможно потраченное на меня время и нервы.
Ega23 (2011-04-13 13:26:00) [3]
> это возможно в данном частном случае? да - как, нет - почему?
Да.
Как - я уже написал.
clickmaker (2011-04-13 13:19:00) [4]> при полном отсутствии каких-либо управляющих символов типа
> табуляции
управляющие символы имеют код < 32, они не зависят от кодировки
AlekVolsk (2011-04-13 13:08:00) [5]соответственно, если в edit1.text только символы алфавита (лат/рус), знаки препинания и цифры, при полном отсутствии каких-либо управляющих символов типа табуляции, то все будет ок. или я не прав?
Но в любом случае, хотелось бы как-то избавиться от предупреждения компилятора, это возможно в данном частном случае? да - как, нет - почему?
clickmaker (2011-04-13 12:41:00) [6]> В каких случаях возможна потеря данных из CirillicString
> и как этого избежать?
При преобразовании из Unicode в локальную кодировку, когда в целевой кодировке нет символов исходной.
AlekVolsk (2011-04-13 12:36:00) [7]
type
CirillicString = type AnsiString(1251);
var
s: CirillicString;
begin
s := edit1.Text;
end;
Компилятор пишет: Implicit string cast with potential data loss from 'TCaption' to 'CirillicString', т.е. неявный строковый бросок с потенциальной потерей данных от 'TCaption' до 'CirillicString'. В каких случаях возможна потеря данных из CirillicString и как этого избежать?
Если откровенно туплю - извиняйте, 40 часов уже изза компа не выхожу
Ega23 (2011-04-13 10:21:00) [8]
var
as: AnsiString;
us: string;
begin
as := 'Bla-bla-bla';
us := string(as);
us := 'foo';
as := AnsiString(us);
end;
Anatoly Podgoretsky (2011-04-13 09:01:00) [9]> AlekVolsk (13.04.2011 00:08:04) [4]
Если локализация совпадает, то кодировку можно не указывать, но лучше это делать всегда.
AlekVolsk (2011-04-13 00:08:00) [10]Если я понял правильно, то вместо AnsiString я должен использовать либо CirillicString либо AnsiString(1251) и все будет хорошо, или я не прав?
Eraser, премного благодарен за ссылки, многое встало на свои места.
AlekVolsk (2011-04-12 23:51:00) [11]А не прокатывает, когда Edit.Text передаешь как AnsiString-параметр в функцию, равно как и присваиваешь полю результат функции в AnsiString. Казалось бы, проще функцию переписать, но таких несколько тысяч, а сроки поджимают...
Eraser (2011-04-12 23:48:00) [12]http://edn.embarcadero.com/article/38446
http://edn.embarcadero.com/article/38582
http://edn.embarcadero.com/article/38703
Palladin (2011-04-12 23:41:00) [13]а приравнять не пробовал?