![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с поддержкой латышских букв в программе
Антипов В.А. © (2013-10-03 00:01:00)Здравствуйте! Подскажите пожалуйста,незнаю что делать. Написал клиенту из Латвии прогу для печати накладных. В ней клиент вносит свои реквизиты, данные для печати и печатает накладную. Проблема в том что в реквизитах всяко-разные латышские буквы, которых нет в английском алфавите. Вносить прога дает, а сохраняет неверно(при закрытии) реквизиты в текстовый файл(для последующей загрузки реквизитов,чтобы снова не вводить при выписке). При сохранении прога сама правит символы на англ.манер,например С(с верхней галкой) на просто С и т.д. Как это побороть?
Антипов В.А. (2013-10-03 11:48:00) [1]Получилось,все работает как надо! Спасибо всем за полезные советы!
Антипов В.А. (2013-10-03 10:26:00) [2]Понял. Спасибо! :) Попробую набросать загрузку файла через TStringList...
DVM (2013-10-03 10:19:00) [3]
> Антипов В.А. (03.10.13 00:57) [16]
> или обычный Read подойдет?
Не подойдет. И вообще забудь про этот анахронизм паскалевские файлы.
У TStringList есть метод LoadFromFile, пользоваться точно также как SaveToFile, там тоже кодировка есть. Кстати, это еще вопрос, какая кодировка нужна твоему клиенту. Имхо наилучший вариант - UTF8.
Антипов В.А. (2013-10-03 00:57:00) [4]Читать надо тоже по особому или обычный Read подойдет?
Антипов В.А. (2013-10-03 00:56:00) [5]SL.SaveToFile('rekviziti.lst', TEncoding.Unicode); компилит без ошибок. Отправлю клиенту, пусть потестит... Спасибо!
Антипов В.А. (2013-10-03 00:52:00) [6]http://s020.radikal.ru/i721/1310/ef/f75eb963aa6e.jpg
DVM (2013-10-03 00:50:00) [7]
> Антипов В.А. (03.10.13 00:47) [11]
Тогда делай как я написал. Я не помню, есть ли в D2010 свойство Encoding у TStringList, если все же нету, тогда вызови метод так SL.SaveToFile('rekviziti.lst', TEncoding.Unicode);
Антипов В.А. (2013-10-03 00:48:00) [8]Такие юниты юзаю:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Антипов В.А. (2013-10-03 00:47:00) [9]Delphi 2010 Могу скрин кинуть :)
Anatoly Podgoretsky (2013-10-03 00:45:00) [10]
> Антипов В.А. (03.10.13 00:21) [4]
> Delphi 2010, а код простой:varF:TextFile;
> в юникоде?
ТеxtFile не пойдет, он без поддержки Юникода. Используй TStringList
DVM (2013-10-03 00:40:00) [11]
> Антипов В.А. (03.10.13 00:37) [7]
у тебя точно Delphi 2010?
DVM (2013-10-03 00:40:00) [12]
> Антипов В.А. (03.10.13 00:37) [7]
uses SysUtils;
Антипов В.А. (2013-10-03 00:37:00) [13][DCC Error] Unit1.pas(70): E2003 Undeclared identifier: 'Encoding'
Антипов В.А. (2013-10-03 00:34:00) [14]>DVM Спасибо! Попробую...
DVM (2013-10-03 00:27:00) [15]
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.Encoding := TEncoding.Unicode;
SL.Add(Edit1.Text);
...
SL.SaveToFile('rekviziti.lst');
finally
SL.Free;
end;
end;
Антипов В.А. (2013-10-03 00:21:00) [16]Delphi 2010, а код простой:
var
F:TextFile;
begin
AssignFile(F,'rekviziti.lst');
Rewrite(F);
WriteLn(F,Edit1.Text);
WriteLn(F,Edit2.Text);
WriteLn(F,Edit3.Text);
CloseFile(F);
Как сохранять в юникоде?
DVM (2013-10-03 00:20:00) [17]
> Туповатый © (03.10.13 00:17) [2]
> Unicode разве не спасет?
У него перекодируется наверняка при сохранении в файл, т.к. TStringList, TStringStream и прочие по умолчанию используют TEncoding.Default, а это Ansi
Туповатый (2013-10-03 00:17:00) [18]Unicode разве не спасет?
DVM (2013-10-03 00:07:00) [19]
> Вносить прога дает, а сохраняет неверно
версию делфи и код сохранения в студию