Einzelnen Beitrag anzeigen

Passi077

Registriert seit: 7. Okt 2004
23 Beiträge
 
#1

JvCreateProcess: Ausgabe von Konsolenanwendung abfragen

  Alt 21. Apr 2009, 23:07
Hi,

ich hab mir das Beispiel zu JvCreateProcess der JEDI Library angeschaut. Ich möchte damit ein C Konsolenprogramm steuern, und die Ausgaben auswerten.

Delphi-Quellcode:
procedure TForm1.StartCommandProcessor;
begin
  { Retrieve the command processor name }
  if not JclSysInfo.GetEnvironmentVar('COMSPEC', CommandLine) or (Length(CommandLine) = 0) then
    { Paranoid }
    CommandLine := 'COMMAND.EXE';

  JvCreateProcess1.CommandLine := CommandLine;
  { Redirect console output, we'll receive the output via the OnRead event }
  JvCreateProcess1.ConsoleOptions := JvCreateProcess1.ConsoleOptions + [coRedirect];
  { Hide the console window }
  JvCreateProcess1.StartupInfo.ShowWindow := swHide;
  JvCreateProcess1.StartupInfo.DefaultWindowState := False;
  { And start the console }

  JvCreateProcess1.Run;

end;

procedure TForm1.JvCreateProcess1Read(Sender: TObject; const S: String;
  const StartsOnNewLine: Boolean);
begin
  memo1.Lines.Add(s);
end;
Starte ich nun über den JvProcess eine C-Konsolenanwendung, so funktioniert das leider nicht komplett. Die C-Anwendung sieht ganz einfach aus:

Code:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int i=0;
  printf("testausgabe\n");
  scanf("%d", i);
  print("Zeichen eingelesen");
  return 0;
}
Leider wird mein Memo mit den Ausgaben erst befüllt, sobald die C-Anwendung beendet ist (es kommen dann alle Ausgaben auf einmal).

Woran liegt das, und wie ändere ich das so das jede Ausgabe der Konsolenanwendung sofort sichtbar ist?
Dabei ist es egal, ob ich das C-Programm oder das Delphi Programm anpassen muss.. ist beides ok

Danke + Grüße
Pascal
  Mit Zitat antworten Zitat