Bonjour,
je suis novice en Delphi (quelques semaines de développement) et je bloque sur ce petit problème.
J'ai écris le code qui me permet de lire la sortie d'un programme console à travers un pipe. Dans ma première expérience pour apprendre à manipuler tout ça, je stocke ce que je lis dans un szBuffer: array[0..256] of AnsiChar que je recopie au fur et à mesure dans un TMemoryStream. Puis, à la fin, je sauvegarde tout le TMemoryStream dans un fichier texte. Et là, pas de problème, je récupère bien toutes les infos de ma console dans mon fichier texte. Parfait !
Dans ma deuxième expérience, je veux ajouter dans un TMemo ce que me fournit le szBuffer associé à mon pipe au fur et à mesure. D'abord, j'ai naïvement utilisé la méthode Memo.Lines.Add() où j'envoie mon szBuffer en AnsiString.
Et là, ça ne fonctionne pas. Je suppose que cela provient du fait que j'envoie dans Lines des "morceaux" de ligne. En effet, mon szBuffer peut très bien contenir des fins de ligne, puis le début d'une autre ligne non terminée...
Bref, je suppose qu'il faudrait que j'arrive à cumuler dans mon TMemo mes sorties successives pour mon szBuffer comme je le faisais avec TMemorySTream.
Ma question est donc, comment faire pour puncher mon szBuffer au fur et à mesure dans TMemo ?
Le code ressemble à ça :
Mon problème est vraiment de charger au fur et à mesure le TMemo, si c'est possible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 try while true do begin bTest := ReadFile(hPipeOutputRead, szBuffer, 256, dwNumberOfBytesRead, nil); if not bTest then begin break; end; Memo1.Lines.Append(szBuffer); end; finally /.../ end;
PS : J'espère que mes explications sont à peu près claires !
Merci par avance.
Partager