2 pièce(s) jointe(s)
TProcess : redirection d'un flux Python vers un TMemo
Bonjour :D .
Je voudrais rediriger le flux de sortie d'un script Python vers un TMemo.
J'utilise le script Python suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#!/usr/bin/env python
# coding: utf8
import time
print('Compte à rebours:')
time.sleep(1.0)
i = 1
while i < 11:
print(11 - i)
i += 1
time.sleep(1.0)
print('C''est parti:') |
Si je le lance dans la console, ça me donne :
Pièce jointe 578075
En utilisant le code Lazarus suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
procedure TForm1.Button1Click(Sender: TObject);
var
Processus: TProcess;
begin
try
Processus := TProcess.Create(nil);
Processus.Executable:= 'python';
Processus.Parameters.Add('test.py');
Processus.Options := Processus.Options + [poUsePipes];
Processus.Execute;
Memo1.Lines.LoadFromStream(Processus.output);
finally
Processus.Free;
end;
end; |
j'obtiens ceci :
Pièce jointe 578076
Apparemment tout va bien sauf que dans la console, l'affichage suit bien le script, à savoir :
- affichage de "Compte à rebours :" ;
- pause de 1 seconde ;
- affichage de "10" ;
- pause de 1 seconde
- ... ;
- affichage de "C'est parti :".
alors qu'en ce qui concerne le TMemo, le tout s'affiche en bloc après une attente correspondant à la somme des pauses.
Y a-t-il un moyen d'obtenir sur le TMemo le même affichage "dynamique" que sur la console ?
Merci d'avance,
naute