Bonjour.
Je voudrais rediriger le flux de sortie d'un script Python vers un TMemo.
J'utilise le script Python suivant :
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
En utilisant le code Lazarus suivant :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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
Partager