![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Стоит задача: изменить кодировку текстового файла из DOS на Windows. Подсказали функцию OEMtoShar. Вот только не могу разобраться с синтаксисом этой функции. Все что я пока понял: там используется переменная не типа string, а какого то другого. Будьте добры, не смейтесь, и подскажите на конкретном примере, как используя эту (или подобную) функцию, изменить кодировку текстового файла или переменной типа string, содержащую строку из такого файла.
|
|
#2
|
||||
|
||||
|
А как тебе такой вариант. Если у Memo установить Font.Charset в OEM_CHARSET, то Memo сможет читать файлы в DOS кодировке.
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Font.Charset := OEM_CHARSET;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile( OpenDialog1.FileName );
end; |
|
#3
|
|||
|
|||
|
Но мне то потом все равно нужен текст в нормальной кодировке, чтобы потом его использовать в других программах. Как же быть?
|
|
#4
|
||||
|
||||
|
Попробуй так:
Код:
procedure TForm1.Button1Click(Sender: TObject); var _Input, _Output: PChar; begin GetMem( _Input, 256 ); GetMem( _Output, 256 ); _Input := 'Строка в DOS кодировке'; OemToChar( _Input, _Output ); Edit1.Text := _Output; end; |
|
#5
|
||||
|
||||
|
так в какой кодировке делаешь Memo->Lines->SaveToFile(), в такой и сохранится текст... Все просто =))
|
|
#6
|
|||
|
|||
|
Цитата:
Если копировать текст из поля с дос-кодировкой в поле с вин-кодировкой, то там он уже читаться не будет. Если же вставить текст в поле с дос-кодировкой, потом изменить ее на вин-кодировку, то он просто перестанет читаться! Может быть ты имел в виду что то вроде: Код:
memo2.lines.savetofile('myfile.txt').font.charset:=ANSI_SHARSET |
|
#7
|
|||
|
|||
|
Цитата:
Попробовал. При компиляции выделяет строку: Код:
_Input:=memo1.Lines[i]; Код:
_Input:='Строка в DOS кодировке'; Код:
Incompatible types: 'String' and 'PAnsiChar' |
|
#8
|
||||
|
||||
|
Цитата:
Код:
_Input := PChar(memo1.Lines[i]); |