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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.08.2010, 20:23
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию CMD и кодировка

В программе пытаюсь получить название текущего VPN-соединения:
Код:
WinExec(PAnsiChar('cmd /u /c rasdial > log.txt'), SW_HIDE);
При загрузке файла в Memo кириллица отображается "крякозябами":
Цитата:
‘ўп§м б
PPPoE
Љ®¬ *¤ гбЇҐи*® § ўҐаиҐ* .
и, если название соединения на русском, то дальше работать с этим названием невозможно.
Помогите заставить кириллицу отображаться кириллицей
П.С. Delphi 2010
Ответить с цитированием
  #2  
Старый 05.08.2010, 21:29
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

OEMToAnsi...
Ответить с цитированием
  #3  
Старый 05.08.2010, 21:49
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

Делаю так:
Код:
var
N: PAnsiChar;
begin
Memo1.Lines.LoadFromFile('log.txt');
N:=PAnsiChar(Memo1.Lines.GetText);
OEMToAnsi(N,N);
Memo1.Lines.Text:=StrPas(N);
, но получаю меньше бреда О_о:
Цитата:
 ^?з
Ответить с цитированием
  #4  
Старый 06.08.2010, 00:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,026
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ой, держите меня семеро...
PXXXChar - это указатель!!! Под него надо выделять память!!!
Ответить с цитированием
  #5  
Старый 06.08.2010, 10:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

на Delphi 6 прекрасно работает:
Код:
procedure TForm1.AOemToAnsi;
var
  s: String;
begin
  Memo1.Lines.LoadFromFile('d:\0');
  SetLength(s, Length(Memo1.Text));
  OemToAnsi(PChar(Memo1.Text), PChar(s));
  Memo1.Text:=s;
end;
Ответить с цитированием
  #6  
Старый 06.08.2010, 12:12
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

NumLock, а у мну материться:
Цитата:
E2010 Incompatible types: 'Char' and 'AnsiChar'
тут:
Код:
OemToAnsi(PChar(Memo1.Text), PChar(s));
П.С. В Д7 тоже норм работает, но нужно под Д2010.
Ответить с цитированием
  #7  
Старый 06.08.2010, 12:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну а OemToAnsi(PAnsiChar(Memo1.Text), PAnsiChar(s));
Ответить с цитированием
  #8  
Старый 06.08.2010, 13:16
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

Делал так, но результат такой же
Только меняется это:
Цитата:
‘ўп§м б
PPPoE
Љ®¬ *¤ гбЇҐи*® § ўҐаиҐ* .
на это:
Цитата:
‘ўпзм б
PPPoE
Љ®¬ *¤ гбЇҐи*® § ўҐаиҐ* .

Последний раз редактировалось adidas, 06.08.2010 в 13:19.
Ответить с цитированием
  #9  
Старый 06.08.2010, 13:53
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Эм... D2010? Поиграй с UTF8Decode/UTF8Encode... симптомы похожи...
А в самом файле что? сохранённом?
И что выводит программа, если запустить её в cmd, НЕ из Delphi?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #10  
Старый 06.08.2010, 14:36
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от DJ PhoeniX
И что выводит программа, если запустить её в cmd, НЕ из Delphi?
Так, что-ли: cmd.exe /c prog.exe ??? Тоже самое выводит.

Цитата:
Сообщение от DJ PhoeniX
А в самом файле что? сохранённом?

Выше выкладывал я. Кстати, AkelPad отображает нормально все.
Вот, что должно в Memo отображать:
Цитата:
Связь с
PPPoE
Команда успешно завершена.

Цитата:
Сообщение от DJ PhoeniX
D2010? Поиграй с UTF8Decode/UTF8Encode... симптомы похожи...
Да, 2010. UTF8Decode/UTF8Encode пробовал еще перед созданием это темы. Не помогли они.
Ответить с цитированием
  #11  
Старый 06.08.2010, 14:57
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Посмотри тогда в Акелпаде (или в Notepad++), какую кодировку он определит для файла... Под рукой 2010 нету, так что не могу у себя всё проверять, но попробуй поиграть не с AnsiChar, а WideChar - ибо 2010 по определению юникодный...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #12  
Старый 06.08.2010, 15:38
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

Если Notepad++ не врет, то кодировка OEM 866.
Ответить с цитированием
  #13  
Старый 06.08.2010, 15:47
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Попробуй чтоле OemToCharW... Или что-то в этом роде...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #14  
Старый 14.08.2010, 22:08
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

Может, я что-то не так делаю, но ничего не помогает
Ответить с цитированием
  #15  
Старый 15.08.2010, 16:07
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию

Короче, в Д2010 не работал ни один способ, пришлось писать отдельную прогу в Д7, для перекодировки.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter