Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с поддержкой латышских букв в программе


Антипов В.А. ©   (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]


>  Вносить прога дает, а сохраняет неверно

версию делфи и код сохранения в студию


Наверх

Титульная страница Поиск, карта сайта Написать письмо