Konsola w TMemo

0

Cześć!

Mam taką sytuację:
chcę zrobić konsolę w TMemo (komunikaty wpisywane do TEdit), mam już pewien kod oparty na DosExecAndWait32 (kod znalazłem na forum:
http://4programmers.net/Forum/viewpost.php?id=122872&h=DosExecAndWait32

I takie problemy:
-program po wpisaniu każdorazowo polecenia zamyka sesję (nie mogę np. przejść do innego katalogu, bo potem jak uruchamia to znowu jestem z tym domyślnym)
-program, nie wiem dlaczego, wiesza się po wpisaniu dir
-program nie czeka do końca wypisywania wyniku przez np. netstat, tylko wyświetla to co jest wypisywane przez netstat w pierwszym rzucie (Protokół, Adres lokalny - słowem nagłówek)

Czy ktoś może mi pomóc?
Dzięki z góry i pozdrowienia! :)

0

Dzięki za pomoc!
Na prawdę! Inaczej nie byłbym zmuszony przeszukiwać ruskich i niemieckich forów :-P .

Znalazłem rozwiązanie sam! (prawie sam) Nie jest zbyt elegenckie ale działa. Mam pomysł! Może ktoś to przetestuje???

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Input, Output: String;
  TF: TextFile;
begin
  if Key=VK_RETURN then
  begin
    Input := Edit1.Text;
    ShellExecute(Handle,
        'open',
        PChar('cmd.exe'),
        PChar('/C ' + Input + '>C:\test.txt'),
        Nil,
        SW_HIDE);

    Sleep(5000);
    if FileExists('C:\test.txt') then
    begin
      AssignFile(TF, 'C:\test.txt');
      Reset(TF);
      with Memo1.Lines do
      begin
        Add('---------------------------------------------------------');
        Add(Input);
        Add('---------------------------------------------------------');
      end;
      while not Eof(TF) do
      begin
        Readln(TF, Output);
        if Length(Output)>0 then
          OemToChar(PChar(Output), PChar(Output));
        Memo1.Lines.Add(Output);
      end;
      CloseFile(TF);
      Edit1.Text := '';
    end else
      ShowMessage('błąd :(');

  end;
end;

THX for all!

0

U Ciebie to działa?? Jak tak to wyślij na <email>[email protected]]</email> cały program, bo u mnie to:
1.nidziała
2.Nie mam procedure ShellExecute i zastępuje ją ExecuteFile(FMXUtils.pas)

0

ShellExecute jest w ShellApi, a proc na oko powinien działać

0

Hmmmm. może jestem niekumaty, ale u mnie ten plik ciągle jest pusty.......

0

Już wiem, o co chodzi - na Win Me nie ma pliku cmd.exe ;-(

0

Już wiem, o co chodzi - na Win Me nie ma pliku cmd.exe ;-(

no to wpisz command.com

0

Wiem, wiem, już sobie poradziłem w inny sposób i wszystko jest OK

1 użytkowników online, w tym zalogowanych: 0, gości: 1