Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.07.2006, 17:18
greenbegin greenbegin вне форума
Прохожий
 
Регистрация: 16.06.2006
Сообщения: 6
Репутация: 10
По умолчанию конвертация текста DOS - Win

Стоит задача: изменить кодировку текстового файла из DOS на Windows. Подсказали функцию OEMtoShar. Вот только не могу разобраться с синтаксисом этой функции. Все что я пока понял: там используется переменная не типа string, а какого то другого. Будьте добры, не смейтесь, и подскажите на конкретном примере, как используя эту (или подобную) функцию, изменить кодировку текстового файла или переменной типа string, содержащую строку из такого файла.
Ответить с цитированием
  #2  
Старый 03.07.2006, 19:33
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

А как тебе такой вариант. Если у 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  
Старый 05.07.2006, 18:24
greenbegin greenbegin вне форума
Прохожий
 
Регистрация: 16.06.2006
Сообщения: 6
Репутация: 10
По умолчанию

Но мне то потом все равно нужен текст в нормальной кодировке, чтобы потом его использовать в других программах. Как же быть?
Ответить с цитированием
  #4  
Старый 06.07.2006, 15:58
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Попробуй так:

Код:
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  
Старый 06.07.2006, 16:42
Аватар для Майняк
Майняк Майняк вне форума
Начинающий
 
Регистрация: 03.02.2006
Адрес: Киров
Сообщения: 198
Репутация: 50
По умолчанию

так в какой кодировке делаешь Memo->Lines->SaveToFile(), в такой и сохранится текст... Все просто =))
Ответить с цитированием
  #6  
Старый 07.07.2006, 18:39
greenbegin greenbegin вне форума
Прохожий
 
Регистрация: 16.06.2006
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Decoding
Попробуй так:

Код:
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;

Попробовал. При компиляции выделяет строку:
Код:
_Input:=memo1.Lines[i];
Я ее вставил вместо строки:
Код:
_Input:='Строка в DOS кодировке';
Ошибка:
Код:
Incompatible types: 'String' and 'PAnsiChar'
Ответить с цитированием
  #7  
Старый 07.07.2006, 18:47
greenbegin greenbegin вне форума
Прохожий
 
Регистрация: 16.06.2006
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Майняк
так в какой кодировке делаешь Memo->Lines->SaveToFile(), в такой и сохранится текст... Все просто =))

Если копировать текст из поля с дос-кодировкой в поле с вин-кодировкой, то там он уже читаться не будет.
Если же вставить текст в поле с дос-кодировкой, потом изменить ее на вин-кодировку, то он просто перестанет читаться!
Может быть ты имел в виду что то вроде:
Код:
memo2.lines.savetofile('myfile.txt').font.charset:=ANSI_SHARSET
Но ведь такой синтаксис невозможен. Объясни, что ты имел в виду
Ответить с цитированием
  #8  
Старый 07.07.2006, 23:32
Аватар для Майняк
Майняк Майняк вне форума
Начинающий
 
Регистрация: 03.02.2006
Адрес: Киров
Сообщения: 198
Репутация: 50
По умолчанию

memo2.lines.savetofile('myfile.txt').font.charset: =ANSI_SHARSET
Ну ты загнул!
Я сказал то, что сказал.
Если тебе известно, то символы ЛЮБЫЕ=))) имеют код от 0 до 255...
Вот тебе пример:
http://www.sysman.ru/index.php?showtopic=5405
Ответить с цитированием
  #9  
Старый 07.07.2006, 23:41
Аватар для Майняк
Майняк Майняк вне форума
Начинающий
 
Регистрация: 03.02.2006
Адрес: Киров
Сообщения: 198
Репутация: 50
По умолчанию

кстати, вставь PChar(......) чтоб не было ошибок String<-> PAnsiChar.
Ответить с цитированием
  #10  
Старый 09.07.2006, 01:45
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Код:
_Input:=PChar(memo1.Lines[i]);
Ответить с цитированием
  #11  
Старый 11.07.2006, 12:51
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

http://www.sysman.ru/index.php?showtopic=3719
Ответить с цитированием
  #12  
Старый 18.10.2007, 23:00
JCDArtem JCDArtem вне форума
Прохожий
 
Регистрация: 18.10.2007
Сообщения: 17
Репутация: 10
По умолчанию

О! У меня почти подобный вопрос

У меня файл в Юникоде, надо прочитать в стринг_грид.
Ответить с цитированием
  #13  
Старый 18.10.2007, 23:59
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от greenbegin
Попробовал. При компиляции выделяет строку:
Код:
_Input:=memo1.Lines[i];
Я ее вставил вместо строки:
Код:
_Input:='Строка в DOS кодировке';
Ошибка:
Код:
Incompatible types: 'String' and 'PAnsiChar'
А так:
Код:
_Input := PChar(memo1.Lines[i]);
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #14  
Старый 19.10.2007, 00:15
JCDArtem JCDArtem вне форума
Прохожий
 
Регистрация: 18.10.2007
Сообщения: 17
Репутация: 10
Смех

mav_c, может я конешно чего-то не догоняю, но мне кажется, что ты продублировал сообщение от Дэкодинг-а
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter