![]() |
idFTP.Get - Destination file already exists
Zunächst mal vorweg: ganz blöd bin ich hoffentlich mal nicht.
Problem: Delphi.Net, Indy FTP-Client, Verbindung zum FTP-Server - wunderbar, FTP.Get --> Destination file already exists. Die Datei existiert auf der Festplatte 100% nicht (!). Selbst wenn ich den FTP.Get Parameter Overwrite verwende kommt diese Meldung. Was tun? --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project1.exe ist eine Exception der Klasse IdFTP.EIdFTPFileAlreadyExists mit der Meldung 'Destination file already exists.' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Der Zielordner hat alle Schreibrechte, die Datei existiert nicht und der Zieldateiname ist auch korrekt (keine doppelten \ oder so).
Code:
procedure TfrmMain.timStartTimer(Sender: TObject);
var f: TextFile; FileName: string; DestFileName: string; t: string; begin timStart.Enabled := false; try log('Verbinde nach ' + IdFTP.Host); IdFTP.Connect; IdFTP.Login; if IdFTP.Connected then begin log('Verbindung erfolgreich hergestellt!'); t := 'test'; FileName := 'files.txt'; DestFileName := GetRunDir + FileName; // GetRunDir = Aktueller Pfad mit allen Schreibrechten IdFTP.Get(FileName, DestFileName); // <-- Liefert Fehler if FileExists(FileName) then begin assignfile(f, FileName); reset(f); while not eof(f) do begin try readln(f, t); IdFTP.Get(t, GetRunDir + t, true, true); except log('Datei ' + t + ' konnte nicht heruntergeladen werden!'); end; end; end else begin log('Die Datei files.txt wurde nicht gefunden!'); end; end else begin log('Konnte mich nicht verbinden!'); end; except on E: Exception do begin log('Es gab ein kritisches Problem: ' + E.Message); end; end; end; |
Re: idFTP.Get - Destination file already exists
Hallo!
Genau dieses Problem hatte ich gestern auch. Nach meinem Umstieg auf Delphi 2006 Professional wollte ich ein bestehendes Programm erweitern, und das gar nicht mal bei der FTP-Funktion. Beim Testen bekam ich dann diese Fehlermeldung. Keine Ahnung warum. Es hatte sich am FTP-Server nichts geändert. NAch längerem Suchen und Experimentieren habe ich folgendes mit Erfolg praktiziert: IdFTP1.Get('quelle.txt.','ziel.txt',true) Der dritte Parameter (also true) ist eigentlich der Schalter für den RESUME-Modus bei der FTP-Übertragung. Sobald er auf False steht oder einfach nicht definiert wird wie bei Dir funktioniert die Sache nicht... Hab' bísher noch nicht festgestellt warum.. In den Vorgängerversionen mit Delphi 7 war es jedenfalls anders... |
Re: idFTP.Get - Destination file already exists
Zitat:
![]() |
Re: idFTP.Get - Destination file already exists
Also ich weiss nicht. Ich habe es nun mit der neuesten Version von Indy indy_vs10.1.5.exe versucht, und dem Befehl
Delphi-Quellcode:
Selbe Fehlermeldung...
IdFTP.Get(FileName, GetRunDir + FileName, true, true);
Diese generelle Funktion für ein existierendes idFTP auf frmMain umgeht das Problem:
Delphi-Quellcode:
procedure TfrmMain.FTPGet(_File: WideString);
var fs: TFileStream; DestFileName: string; begin if IdFTP.Connected then begin DestFileName := GetRunDir + _File; log('Quelle: ' + _File); log('Ziel: ' + DestFileName); if IdFTP.Size(_File) <> 0 then begin fs := TFileStream.Create(DestFileName, fmOpenReadWrite or fmShareDenyNone or fmCreate); try try IdFTP.Get(_File, fs, false); except on E: Exception do begin log(E.Message); end; end; finally FreeAndNil(fs); end; end; end else begin log('Kann ' + _File + ' nicht herunterladen, da FTP nicht verbunden ist!'); end; end; |
Re: idFTP.Get - Destination file already exists
Zitat:
Recht herzlichen Dank für den Workaround. Ich habe jetzt auch versucht mit Hilfe von Indy.Sockets.dll die VCL.NET Abhängigkeit zu entfernen. Aber weder Version 10.1.5.17875 noch Version 10.1.5.33678 erlauben es mir meine WinForms Anwendung nur mit Indy.Sockets.dll & Mono.Security.dll zu kompilieren. Bei beiden Versionen beschwehrt sich BDS2006 mit folgender Fehlermeldung: Zitat:
![]() Offensichtlich ist diese Assembly für Visual Studio geschrieben und kommt ohne DCUIL/DCPIL Dateien. Kann ich sie dennoch in BDS2006 Delphi.NET verwenden? Wenn ja, wie? Recht herzlichen Dank für eine kurze Antwort im Voraus. Salut, Mathias |
Re: idFTP.Get - Destination file already exists
Zitat:
Mit freundlichen Grüßen |
Re: idFTP.Get - Destination file already exists
Zitat:
|
Re: idFTP.Get - Destination file already exists
Musst mich da auch erstmal durchlesen, des Thread is ja auch schon bissel älter.
Also das Programm lädt quasi eine Indexdatei herunter (files.txt), die geöffnet wird, und dann alle Dateien herunterlädt, die hier drinnen stehen. Je Zeile eine Datei. Die Datei files.txt ist natürlich nicht in sich selbst angegeben, und die Datei die angegeben sind existieren natürlich auf dem FTP in dem selben Ordner. Deshalb gilt: Filename = Indexdatei t = jeweils andere "Daten"-Datei |
Re: idFTP.Get - Destination file already exists
Vielleicht liegt es ja auch einfach an mir :/
Also: ich habe mittlerweile einen komplett anderen PC, Delphi 2007 und _kein_ .net.
Delphi-Quellcode:
Wie kann es hier zu 'Destination file already exists.' kommen?
// strFileName: TFileName
DeleteFile(strFileName); Application.ProcessMessages; if not FileExists(strFileName) then begin ftp.Get(ExtractFileName(strFileName), strFileName, true, true); // <-- Hier end; |
Re: idFTP.Get - Destination file already exists
Das gleiche Problem habe ich auch und bin etwas angepisst.
|
Re: idFTP.Get - Destination file already exists
Ich habe das Problem nach wie vor nicht lösen können und bin deshalb auf die uralten FastNet Komponenten von früheren Delphiversionen umgestiegen. Einfach zu bedienen und funktionieren einfach ohne Mucken.
Indy-Ftp ist imho einfach besch...eiden. Für einen Lösungsansatzt wäre auch ich dennoch -nach wie vor- sehr dankbar. |
Re: idFTP.Get - Destination file already exists
Hallo,
ich habe dazu noch diesen Beitrag gefunden. Ich selbst verwende auch Indy10 und hatte ebenfalls diesen Fehler. Seitdem ich nur mehr max. einen Parameter auf true setze, funktioniert es. mfg Herbert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz