C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выгрузка с консоли  (Прочитано 1384 раз)
excellion44
Участник


Сказали спасибо: +10/-9
Offline

Сообщений: 275


Выгрузка с консоли
« : 08 Ноябрь 2012, 08:22:48 »

Доброго времени суток ув.Форумчане!
вообщем проблема у меня в том что пытаюсь выгрузить данные с консоли:

Код:
system("ipconfig>c:\\1.txt");

выгружает но текст в файле весь покарежен (что-то не так с кодировкой)
открывал 1.txt c помощью TotalCommander по F3 (Lister)  там выбрал кодировку ASCII(Кодировка DOS) и тогда все отобразилось нормально...
так вот как мне сделать, чтобы сразу после того как я выгрузил с консоли, отображало мне нормально, чтобы я мог допостим этот файл потом загрузить в TMemo  (а то так там отображает тоже одни иероглифы)
Записан
Еxpert
Просто программст
Участник


Сказали спасибо: +21/-36
Offline

Сообщений: 490

DanUnited


Re: Выгрузка с консоли
« Ответ #1 : 08 Ноябрь 2012, 09:06:26 »

Попробую поюзать что нибудь в плане перевода из юникода в ascii, мб что нибудь получится:
Код
void UtoA(){
 FILE *Ansi_file,*Unicode_file;               //файл ANSI и UNICODE
 int bytes_read=1;                            //кол-во считанных байт
 unsigned char Ansi_buf[1];                   //1-байтовый Ansi буфер
 unsigned char Unic_buf[2];                   //2-байтовый UNICODE буфер
 //пути к файлам ANSI и UNICODE
 char *Apath=(char*)calloc(255,sizeof(char));
 char *Upath=(char*)calloc(255,sizeof(char));
 //ввод имен файлов
 printf("Enter filename (unicode format):\n");
 scanf("%s",Upath);
 printf("Enter filename (ansi format):\n");
 scanf("%s",Apath);
 //открытие файлов
 Unicode_file=fopen(Upath,"rb");
 Ansi_file=fopen(Apath,"wb");
 if(Unicode_file==NULL||Ansi_file==NULL){
   printf("Error opening file\n");
 }
 //проверка на кодировку UNICODE
 fread(Unic_buf,2,1,Unicode_file);
 if(Unic_buf[0]!=0xFF&&Unic_buf[1]!=0xFE){
   printf("This is not a unicode file!\n");
 }
 //считывание и перекодировка байтов из UNICODE в ANSI
 while((bytes_read=fread(Unic_buf,2,1,Unicode_file))>0){
   if(Unic_buf[1]!=0x04){
     Ansi_buf[0]=Unic_buf[0];
   }
   else{
     if(Unic_buf[0]==0x01)
       Ansi_buf[0]=0xA8;
     else if(Unic_buf[0]==0x51)
       Ansi_buf[0]=0xB8;
     else
       Ansi_buf[0]=Unic_buf[0]+0xB0; //перекодировка русских символов
   }
   fwrite(Ansi_buf,1,1,Ansi_file);  //запись перекодированных байт в файл
 }while(bytes_read>0);
 //освобождение памяти
 free(Apath);free(Upath);
 //закрытие файлов
 fclose(Unicode_file);
 fclose(Ansi_file);
}
Вот такой код в гугле нагел, а еще WideCharToMultiByte,
Код
BOOL CharToOem(
 LPCTSTR lpszSrc,  // string to translate (ANSI, Unicode)
 LPSTR lpszDst     // translated string (OEM)
);
вот такие функции погуглить, хз как они в C++builder-е выглядят

>>P.S> я могу ошибаться, подождем гуру +
Записан
excellion44
Участник


Сказали спасибо: +10/-9
Offline

Сообщений: 275


Re: Выгрузка с консоли
« Ответ #2 : 08 Ноябрь 2012, 13:08:03 »

не помогло.... всеравно какие то иероглифы в файле
Записан
Rius
Давний друг


Сказали спасибо: +116/-5
Offline

Сообщений: 753


Re: Выгрузка с консоли
« Ответ #3 : 08 Ноябрь 2012, 13:45:40 »

Там не иероглифы, а текст в кодировке, отличной от используемой вашей программой.
OemToChar попробуйте.
Записан
excellion44
Участник


Сказали спасибо: +10/-9
Offline

Сообщений: 275


Re: Выгрузка с консоли
« Ответ #4 : 08 Ноябрь 2012, 13:59:21 »

оО OemToChar прокатило )) спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.061 секунд. Запросов: 22.