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

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

Alien193

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

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

C++:
ShowMessage(ExecuteDOSCommand("echo test"));

Выводит иероглифы и квадратики. Что не так?
 

Вложения

Спасибо за функцию, давно искал.

Вывод происходит в кодировке 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");
как-то так...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!