Pourquoi la séquence suivante ne charge pas le stream dans le RichEdit :
with PriseClient.Connection.Socket do
Fs := TMemoryStream.Create; //Créer le flux
try
try
ReadStream(Fs,TailleFichier,False); //Lire le flux
WriteLn('OK'); //Signaler succès
except
WriteLn('ERR'); //Signaler une erreur
end;
finally
fComment.RichEdit2.Lines.LoadFromStream(Fs);
FreeAndNil(Fs); //Libérer le flux dans tous les cas
alors que celle-ci fonctionne:
with PriseClient.Connection.Socket do
Fs := TMemoryStream.Create; //Créer le flux
try
try
ReadStream(Fs,TailleFichier,False); //Lire le flux
WriteLn('OK'); //Signaler succès
except
WriteLn('ERR'); //Signaler une erreur
end;
finally
fs.SaveToFile('TestStream.rtf');
fComment.RichEdit2.Lines.LoadFromfile('TestStream.rtf');
FreeAndNil(Fs); //Libérer le flux dans tous les cas
Or créer un fichier dans le cadre d'une application multithread n'est pas une très bonne solution, car plusieurs threads peuvent vouloir accéder au même fichier en même temps...
with PriseClient.Connection.Socket do
Fs := TMemoryStream.Create; //Créer le flux
try
try
ReadStream(Fs,TailleFichier,False); //Lire le flux
WriteLn('OK'); //Signaler succès
except
WriteLn('ERR'); //Signaler une erreur
end;
Fs.position := 0;
fComment.RichEdit2.Lines.LoadFromStream(Fs);
finally
Fs.Free; //Libérer le flux dans tous les cas
end;