so ginge es zum Beispiel -
Anstelle von TFileStream nutze TMyFileStream (selbst schreiben)
Delphi-Quellcode:
type
TMyFileStream = class(TFileStream)
private
fOnDestroy: TNotifyEvent;
public
destructor Destroy; override;
property OnDestroy: TNotifyEvent read fOnDestroy write fOnDestroy;
end;
[...]
destructor TMyFileStream.Destroy;
begin
if Assigned(fOnDestroy) then
fOnDestroy(Self);
inherited Destroy;
end;
anschließend könnte dein Ereignis so aussehen:
Delphi-Quellcode:
procedure TForm1.FileStreamClosed(Sender: TObject)
begin
//In Log schreiben: DateiStream wurde freigegeben=> Vorgang beendet
end;
procedure TForm1.IdFTPServer1RetrieveFile(ASender: TIdFTPServerThread; const AFileName: String; var VStream: TStream);
begin
VStream := TMyFileStream.create(translatepath(AFilename, ASender.HomeDir), fmopenread or fmShareDenyWrite)
TMyFileStream(VStream).OnDestroy := FileStreamClosed;
end;