Quelque chose m'échappe...

Signaler
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
-
Bonjour,

Je m'essaie au transfert de fichier via DataSnap.

Côté serveur j'ai ça (en plus du ReportMemoryLeaksOnShutDown activé sur le FormCreate):
function TServerMethods1.getFile(psFileName: string): TMemoryStream;
begin
     Result := TMemoryStream.Create;
     Result.LoadFromFile(psFileName);
end;


Sur mon client :
procedure TFMain.btn_getClick(Sender: TObject);
var
   lServeur   : TServerMethods1Client;
   lMemStream : TMemoryStream;
begin
     lServeur   := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
     lMemStream := TMemoryStream.Create;
     lMemStream.LoadFromStream(lServeur.getFile('D:\Test.txt'));
     lMemStream.SaveToFile('D:\Test2.txt');
     lMemStream.Free;
     lServeur.Free;
     Application.ProcessMessages;
end;


Je m'attendais à une belle fuite mémoire côté serveur, vu que je crée un TMemoryStream que je ne libère pas, mais non, aucun message de Delphi... Est-ce que c'est parce que le retour de la fonction est "évacué" du programme ? Ou est-ce qu'il y a bien une fuite que Delphi ne repère pas ? (ou pour tout autre raison)

Simon

4 réponses

Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
38
Salut,

effectivement à la lecture du code je vois aussi de belles fuites en perspective !!!

et que se passe t-il si coté client tu fais ceci ?

procedure TFMain.btn_getClick(Sender: TObject);
var
   lServeur   : TServerMethods1Client;
   lMemStream : TMemoryStream;
begin
     lServeur   := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
     lMemStream := lServeur.getFile('D:\Test.txt');
     lMemStream.SaveToFile('D:\Test2.txt');
     lMemStream.Free;
     lServeur.Free;
     Application.ProcessMessages;
end;



une violation d'accès ? ou pas




[hr]@+Cirec
[hr]
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
non, pas du tout, ça fonctionne nickel...

Simon
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
oups, pardon Cirec, je n'avais pas vu que tu avais modifié mon code client...

Simon
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Ouaip, violation d'accès sur le savetofile. Encore plus bizarre, juste avant le savetofile, le lmemstream.size vaut 48... et lmemstream <> nil

Simon