Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 18:43   #1
ultrakiller
 
Регистрация: 03.12.2009
Сообщений: 4
По умолчанию Проблема с выводом Delphi 2009

Есть такой код:
Код:
procedure TForm1.RunDosInMemo(CmdLine:String;AMemo:TMemo);
const
   ReadBuffer = 2400;
var
  Security        : TSecurityAttributes;
  ReadPipe,WritePipe  : THandle;
  start           : TStartUpInfo;
  ProcessInfo     : TProcessInformation;
  Buffer          : PChar;
  BytesRead       : DWord;
  Apprunning      : DWord;
  WasOK           : Boolean;
begin
  Screen.Cursor:=CrHourGlass;

  With Security do
  begin
    nlength              := SizeOf(TSecurityAttributes);
    binherithandle       := true;
    lpsecuritydescriptor := nil;
  end;

  if Createpipe (ReadPipe, WritePipe, @Security, 0) then
    begin
      Buffer  := AllocMem(ReadBuffer + 1);
      FillChar(Start,Sizeof(Start),#0);

      start.cb          := SizeOf(start);
      start.hStdOutput  := WritePipe;
      start.hStdInput   := ReadPipe;
      start.dwFlags     := STARTF_USESTDHANDLES +
                           STARTF_USESHOWWINDOW;
      start.wShowWindow := SW_HIDE;
      if CreateProcess(nil,
          PWChar(WideString(CmdLine)),
          nil,
          nil,
          true,
          NORMAL_PRIORITY_CLASS,
          nil,
          nil,
          start,
          ProcessInfo)
      then
      begin
        CloseHandle(WritePipe);
        Apprunning := WaitForSingleObject (ProcessInfo.hProcess,100);

        try
          repeat
            WasOK:=ReadFile(ReadPipe,Buffer[0], ReadBuffer,BytesRead,nil);
            Buffer[BytesRead]:= #0;
            OemToAnsi(PAnsiChar(Buffer),PAnsiChar(Buffer));
            AMemo.Text := AMemo.text + String(Buffer);

            Application.ProcessMessages;
          until (not WasOK) or ( BytesRead = 0 );
        finally
          CloseHandle(ProcessInfo.hProcess);
          CloseHandle(ProcessInfo.hThread);
        end;
    end;

    FreeMem(Buffer);
    CloseHandle(ReadPipe);
  end;
  Screen.Cursor:=CrDefault;

end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Clear;
 RunDosInMemo('ping -t 10.1.0.115',Memo1);
end;
Проблема такая: В Мемо выводит квадратики.
Если не трудно помогите: скажите в чем ошибка, и что нужно сделать чтобы ее исправить.
ultrakiller вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с выводом информацыи Betman Общие вопросы Delphi 2 29.10.2009 17:09
Delphi 2009 проблема с точкой останова. S_Yevgeniy Помощь студентам 1 16.10.2009 14:53
Установил Delphi 2009 возникла проблема mr_Smitt Помощь студентам 6 18.09.2009 22:18
проблема delphi 2009 Ciberal Общие вопросы Delphi 12 07.06.2009 02:40
проблема с выводом результата Nyutka PHP 2 16.04.2009 11:58