|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
конвертация текста DOS - Win
Стоит задача: изменить кодировку текстового файла из 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(), в такой и сохранится текст... Все просто =))
SysMan. C++Builder Internet/Intranet Programming. |
#6
|
|||
|
|||
Цитата:
Попробовал. При компиляции выделяет строку: Код:
_Input:=memo1.Lines[i]; Код:
_Input:='Строка в DOS кодировке'; Код:
Incompatible types: 'String' and 'PAnsiChar' |
#7
|
|||
|
|||
Цитата:
Если копировать текст из поля с дос-кодировкой в поле с вин-кодировкой, то там он уже читаться не будет. Если же вставить текст в поле с дос-кодировкой, потом изменить ее на вин-кодировку, то он просто перестанет читаться! Может быть ты имел в виду что то вроде: Код:
memo2.lines.savetofile('myfile.txt').font.charset:=ANSI_SHARSET |
#8
|
||||
|
||||
memo2.lines.savetofile('myfile.txt').font.charset: =ANSI_SHARSET
Ну ты загнул! Я сказал то, что сказал. Если тебе известно, то символы ЛЮБЫЕ=))) имеют код от 0 до 255... Вот тебе пример: http://www.sysman.ru/index.php?showtopic=5405 SysMan. C++Builder Internet/Intranet Programming. |
#9
|
||||
|
||||
кстати, вставь PChar(......) чтоб не было ошибок String<-> PAnsiChar.
SysMan. C++Builder Internet/Intranet Programming. |
#10
|
||||
|
||||
Код:
_Input:=PChar(memo1.Lines[i]); |
#11
|
||||
|
||||
|
#12
|
|||
|
|||
О! У меня почти подобный вопрос
У меня файл в Юникоде, надо прочитать в стринг_грид. |
#13
|
||||
|
||||
Цитата:
Код:
_Input := PChar(memo1.Lines[i]); --------------------------------------------- Программирование - не профессия, а стиль жизни |
#14
|
|||
|
|||
mav_c, может я конешно чего-то не догоняю, но мне кажется, что ты продублировал сообщение от Дэкодинг-а
|