Bonjour,
Envoyé par
jurassic pork
hello,
En fait le souci c'est que sous linux quand il y a une redirection, un buffer est utilisé. c'est pour cela qu'on est obligé de vider le buffer par un flush si l'on veut voir ce qui se passe en temps réel. On a pas ce problème quand on envoie directement la sortie vers la console.
dans un programme free pascal pour désactiver le buffer on peut utiliser
ttextrec comme ceci par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| procedure TMyApplication.DoRun;
var s : String;
begin
ttextrec(output).flushfunc := ttextrec(output).inoutfunc;
Writeln('Process Input test');
Writeln('Entrez votre nom : ');
while not EOF do
begin
ReadLn(s);
if s = 'quit' then
Break
else
WriteLn(UpperCase(s));
end;
// stop program loop
Terminate;
end; |
Je ne connaissais pas, c'est bon à savoir comme astuce. Merci pur les explications
Envoyé par
jurassic pork
troisième point . Dans le projet Demo lorsque l'on met plusieurs paramètres dans le champ paramètres cela ne semble pas fonctionner :
ami calmant, J.P
Dans la démo dans le "btnExecuteClick"
il faut remplacer
FProcessEx.Params.Add(edtParams.Text);
par
1 2 3
|
FProcessEx.Params.Delimiter := ' ';
FProcessEx.Params.DelimitedText := edtParams.Text; |
Sinon je suis entrain de corriger un ou deux bugs qui traînaient et j'ai remis l'event "OnStdErrOutput", mais je ne sais pas si cela fonctionne réellement.
Je poste la mise à jour d'ici la fin de journée.
A+
Jérôme
Partager