Das Textfile bleibt leer bis eine gewisse Anzahl Zeichen gesammelt ist, oder das Programm beendet wurde.
Egal ob ich es mit AssignFile öffne oder direkt im Editor beobachte.
Das befüllen des Files ist stark vom Programm abhängig.
Manche schreiben ohne merkliche Zeitverzögerung ins File und andere Konsolenprogramme warten bis sie 3000 bis 4000 Chars beisammen haben. Obwohl sie die Ausgabe direkt in der Konsole sofort anzeigen. Womöglich ist die Anwendung auch nur sauschlecht programmiert.
Vielleicht kann man in der Registry irgendwas drehen, oder dem Prozess dazu überreden seinen Cache vorzeitig zu leeren.
Hier mal das relevante aus meinem Code:
Delphi-Quellcode:
StdOutFile := CreateFile (PChar(StdOutFn), FILE_SHARE_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, @SecAttrib, CREATE_ALWAYS,
FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_WRITE_THROUGH, 0);
with StartupInfo do
begin
cb := SizeOf(StartupInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow := SW_HIDE;
lpTitle := ConsoleName;
hStdInput := GetStdHandle (STD_INPUT_HANDLE);
hStdError := StdOutFile;
hStdOutput := StdOutFile;
end;
if CreateProcess(nil,
zAppName,
nil,
nil,
true,
NORMAL_PRIORITY_CLASS,
nil,
PWideChar(WorkDir),
StartupInfo,
ProcessInfo) then