Проблема с с выводом...
Есть вот такой код, он рабочий..
Код:
procedure TForm1.RunDosInMemo(CmdLine:String;AMemo:TMemo); Что вы посоветуете Код взял с форума , и доработал с помощью статьи статьи Среда Delphi 2009 |
ultrakiller, посоветую сделать перекодировку, функцией MultiByteToWideChar() ответа с консоли, перед отправкой в Memo.
Пример для Делфи не приведу, есть на С Код:
BOOL ret = true; Фрагмент добавлен в программу после перевода с VB6 - Capture the Output of a DOS application, в которой не было перекодировки. |
Спасибо за ответ, но подскажите все-таки в чем глюк
|
ultrakiller, последний раз работал с Делфи в 7й Версии.
Выскажу предположение, что Memo в Делфи 2009, склонна к Юникоду, так что вызывая MultiByteToWideChar() с первым параметром CP_OEMCP идёт перекодировка с консольной кодировки непосредственно в Юникод, а не просто смена кодировки, как в случаи с OemToAnsi Например в VB.NET текст для подобного компоненте желательно должен быть в Юникод кодировке, а для Win32 Api элемента управления EDIT, это не принципиально (видимо для обратной совместимости). |
Цитата:
Я не знаю только, есть ли в Delphi 2009 функции аналогичные в C++ Цитата:
Цитата:
|
Цитата:
Цитата:
Buffer:PAnsiChar; ...... ...... begin ..... OemToChar(Buffer,PWideChar(Buffer)); //XP ; OemToAnsi(Buffer, Buffer) //Seven AMemo.Text:=AMemo.Text+String(Buffer); ..... end; |
Время: 06:10. |
Время: 06:10.
© OSzone.net 2001-