AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Prism idFTP.Get - Destination file already exists
Thema durchsuchen
Ansicht
Themen-Optionen

idFTP.Get - Destination file already exists

Offene Frage von "berens"
Ein Thema von berens · begonnen am 7. Apr 2006 · letzter Beitrag vom 22. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

idFTP.Get - Destination file already exists

  Alt 7. Apr 2006, 12:28
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;
  Mit Zitat antworten Zitat
Benutzerbild von movietigger
movietigger

Registriert seit: 15. Dez 2004
Ort: Niedernhausen
4 Beiträge
 
Delphi 2006 Professional
 
#2

Re: idFTP.Get - Destination file already exists

  Alt 10. Apr 2006, 12:55
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...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: idFTP.Get - Destination file already exists

  Alt 10. Apr 2006, 13:00
Zitat von movietigger:
Hab' bísher noch nicht festgestellt warum.. In den Vorgängerversionen mit Delphi 7 war es jedenfalls anders...
Das Problem ist das die Indy-Komponenten für eine .NET-Kompatiblität sehr große Änderungen erfahren haben was sich oft negativ auf die SW-Qualität ausgewirkt hat. Evtl. mal die neueste Version installieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: idFTP.Get - Destination file already exists

  Alt 10. Apr 2006, 13:10
Also ich weiss nicht. Ich habe es nun mit der neuesten Version von Indy indy_vs10.1.5.exe versucht, und dem Befehl

IdFTP.Get(FileName, GetRunDir + FileName, true, true); Selbe Fehlermeldung...

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;
  Mit Zitat antworten Zitat
MathiasBurbach

Registriert seit: 29. Sep 2005
Ort: Sydney, Australien
6 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: idFTP.Get - Destination file already exists

  Alt 27. Jan 2007, 02:35
Zitat von berens:
Also ich weiss nicht. Ich habe es nun mit der neuesten Version von Indy indy_vs10.1.5.exe versucht, ...
Hallo berens,

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:
[Pascal Fatal Error] F2458 Cannot import metadata from Delphi 'library'. Use packages instead
Der entsprechende Newsgroup Thread "Problem using indy with delphi.net" hier ist auch nicht sehr ergiebig.
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
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: idFTP.Get - Destination file already exists

  Alt 27. Jan 2007, 10:30
Zitat von berens:
Delphi-Quellcode:
...
      IdFTP.Get(FileName, DestFileName); // <-- Liefert Fehler
      ...
      IdFTP.Get(t, GetRunDir + t, true, true);
Wieso 2x get ? liegt es vielleicht daran das er sagt "File already exists" ?

Mit freundlichen Grüßen
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#7

Re: idFTP.Get - Destination file already exists

  Alt 27. Jan 2007, 10:37
Zitat von p0w3r5tr34m3r:
Wieso 2x get ? liegt es vielleicht daran das er sagt "File already exists" ?
Ich find's zwar auch merkwürdig, aber laut QT dürfte das trotzdem nicht passieren, da t und filename unterschiedliche Werte haben.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: idFTP.Get - Destination file already exists

  Alt 27. Jan 2007, 12:20
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
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: idFTP.Get - Destination file already exists

  Alt 15. Mai 2007, 16:07
Vielleicht liegt es ja auch einfach an mir :/

Also: ich habe mittlerweile einen komplett anderen PC, Delphi 2007 und _kein_ .net.

Delphi-Quellcode:
// strFileName: TFileName

        DeleteFile(strFileName);

        Application.ProcessMessages;

        if not FileExists(strFileName) then begin

          ftp.Get(ExtractFileName(strFileName), strFileName, true, true); // <-- Hier

        end;
Wie kann es hier zu 'Destination file already exists.' kommen?
  Mit Zitat antworten Zitat
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#10

Re: idFTP.Get - Destination file already exists

  Alt 21. Aug 2007, 17:49
Das gleiche Problem habe ich auch und bin etwas angepisst.
Muh
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz