Indys sind iirc blockierend - d.h. während eine Verbindung hergestellt wird, wird kein anderer Code ausgeführt.
Delphi-Quellcode:
procedure TMain_Form.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Sind Sie sicher, das Sie das Programm schließen und beenden wollen?' + #13#10 + 'Alle laufenden Transfers werden abgebrochen!', mtConfirmation, [mbYes,mbNo], 0) = mrYes;
if CanClose then // Nicht auf =true vergleichen!
begin
if FTPSrv.Connected then
begin
//FTPSrv.Abort;
FTPSrv.Disconnect;
FTPSrv.Quit; // beides nötig ???
end;
Application.Terminate; // Sinnlos - du hast ja schon canclose auf true gesetzt
end;
end;