Hallo,
ich habe die Upload-Routine aus dem obigen Beispiel auf Delphi 2009 bzw. Delphi XE2 ausprobiert, allerdings bekomme ich beim zweiten Aufruf der UploadFile-Methode im Client eine
Exception (bzw. auch bei der Freigabe des DataSnap-Datenmoduls auf dem Client). Ich habe dann mal die Freigabe des aFileStream im Client auskommentiert, damit funktioniert es dann.
Komischerweise scheint es aber auch keine Speicherlecks (auf dem Client) zu geben, jedenfalls liefert FastMM keine. Irgendwo scheint der Stream also dann doch freigegeben zu werden.
Hier meine Upload-Routine, die mehrfach aufgerufen wird:
Delphi-Quellcode:
procedure UploadFile(PfadName, FileName: String);
var lFileStream: TFileStream;
begin
if (FileName <> '') and FileExists(PfadName + FileName) then
begin
lFileStream := TFileStream.Create(PfadName + FileName, fmOpenRead);
try
try
DataModule.ServerMethods1Client.UploadFile(lFileStream, 'KundeXY', FileName);
except
ShowMessage('Übertragung fehlerhaft!');
end;
finally
// lFileStream.Free;
end;
end;
end;
Hat einer von euch eine Idee, warum das so ist?
Es funktioniert zwar grundsätzlich so, aber es bleibt ein ungutes Gefühl, wenn ein lokales Objekt erzeugt wird aber dann nicht mehr (explizit) freigegeben wird.