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