Вывод результата выполнения команды в переменную

  • Автор темы Alien193
  • Дата начала
A

Alien193

Гость
#1
Вот собственно функция, ExecuteDOSCommand, после выполнения dos команды получает результат её выполнения, т.е. то что выводится в консоли на экран.
consoleoutput.pas добавляем в проект С++Builder
и ставим #include "consoleoutput.hpp"
Сами функции написаны на дельфи, я дельфи не знаю, поэтому разобраться в нем не могу.

следующий код, самый простой

C++:
ShowMessage(ExecuteDOSCommand("echo test"));
Выводит иероглифы и квадратики. Что не так?
 

Вложения

A

az09az

Гость
#2
Спасибо за функцию, давно искал.

Вывод происходит в кодировке cp886 (DOS). Ее надо сконвертировать в cp1251(win)

Вот функции для c++ builder 6


Код:
// из DOS в Windows
String DosToWin(String St)
{
PChar Ch;
Ch = StrAlloc(St.Length() + 1);
OemToAnsi(St.c_str(), Ch);
return Ch;
}
// из Windows в DOS
String WinToDos(String St)
{
PChar Ch;
Ch = StrAlloc(St.Length() + 1);
AnsiToOem(St.c_str(), Ch);
return Ch;
}
Так же можно перед выполнением комманды написать chcp1251 например
ExecuteDosCommand("cmd /k chcp1251; echo a");
как-то так...