AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)
Thema durchsuchen
Ansicht
Themen-Optionen

Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

Ein Thema von FBrust · begonnen am 18. Aug 2014 · letzter Beitrag vom 18. Aug 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#1

Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 13:42
Hallo,

ich versuche gerade, eine Excel-Datei mit den Indy-Komponenten von einem FTP-Server herunterzuladen, erhalte aber nur Datensalat.

Auf dem FTP-Server landen gewöhnliche Textdateien, deren Download funktioniert. Excel-Tabellen werden jedoch von Excel nur noch mit Datensalat angezeigt. Lade ich die Datei per Firefox oder Filezilla herunter, sind sie lesbar.

Ich habe zum Vergleich die Datei einmal per Programm (Indy) heruntergeladen und einmal per FileZilla. Die erste Datei wird zerstört angegezeigt, die zweite (FileZilla) einwandfrei.

Ich habe die beiden Dateien dann mit WinMerge verglichen und Überraschung: WinMerge behauptet, dass die beiden Dateien identisch wären.

Im Forum gibt es ja mehrere Threads zu dem Thema, daher habe ich den Tip mit ftBinary (sollte aber Default sein).

Hier der Code, der zum Herunterladen verwendet wird:

Delphi-Quellcode:
  
  idFTP1 := TidFTP.Create(Application);
  try
    idFTP1.Host := strFTPHost;
    idFTP1.Username := strFTPUser;
    idFTP1.Password := strFTPPW;
    idFTP1.Port := intFTPPort;
    idFTP1.UseExtensionDataPort := True;
    idFTP1.TransferType := ftBinary;

    try
      idFTP1.Connect;
      if (idFTP1.Connected) then
        begin
          IdFTP1.ChangeDir('/Upload');

          // Liste in Grid darstellen
          for iCnt := 0 to gv1.RowCount - 1 do
            begin
              if (gv1.CellByName['colCheck', iCnt].AsBoolean) then
                begin
                  strFile := gv1.CellByName['colFile', iCnt].AsString;
                  idFTP1.TransferType := ftBinary;
                  strTargetFile := lblTargetDir.Caption + '\' + strFile;

                  if (FileExists(strTargetFile)) then
                    begin
                      DeleteFile(strTargetFile);
                    end;
                  IdFTP1.Get(strFile, strTargetFile, True);
                end;
            end;
        end
      else
        begin
          blOK := False;
        end;

    except
      on E:Exception do
        begin
          ShowWarning('Fehler bei Herunterladen der Dateien, Meldung: ' + E.Message);
          blOK := False;
        end;
    end;

  finally
    idFTP1.Quit;
    idFTP1.Disconnect;
    idFTP1.Free;
    Screen.Cursor := CurSave;
  end;
Ich habe testweise den Download über TFileStream durchgeführt, mit dem selben Ergebnis.

Wie gesagt, der Code liefert einwandfreie Textdateien, aber keine verwendbaren Excel-Dateien und ich weiss nicht, warum.


Hat vielleicht jemand einen Tip, wo ich suchen könnte?


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty

Geändert von FBrust (18. Aug 2014 um 14:28 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 13:48
Hallo,

könnte es daran liegen, dass Du den transferType in der Schleife auf Ascii setzt
und nie wieder auf binary zurück.
Das es sich soweit ich weiß bei Excel-Dateien um komprimierte Dateien handelt ist der binary Transfermode
der angebrachtere.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 13:49
[...] Hat vielleicht jemand einen Tip, wo ich suchen könnte? [...]
In der ersten Bedingung der Schleife.

//Edit: @Klaus01 war schneller...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 13:57
Vor allem solltest Du den Download in eine eigene Routine auslagern.
Das wäre auch für das Debugging wesentlich pflegeleichter.


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 14:06
Hallo,

danke für die Hinweise auf den Schwachsinn in der ersten Bedingung.

ich habe den Quelltext im ersten Beitrag korrigert, der Fehler bleibt jedoch.

Das mit dem Auslagern in eine eigene Routine werde ich testen.


Grüße
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#6

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 14:19
Zitat:
oder auch nicht
Ist es das nun, oder nicht?

Und wenn du es nicht weißt, warum machst du dann nicht mal einen Binärvergleich der Dateien und schaust nach ob und was sich da unterscheidet?



Ich hab noch zwei weitere Rätsel für dich.


Was passiert wohl, wenn der erste Eintrag in dem ominösen gv1 ein colCheck=False besitzt?

Und was wird wohl passieren, wenn zwischendurch ein Eintrag das colCheck=False hat?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 14:26
Hallo,

das ominöse gv1 ist ein Grid, in dem die Namen der Dateien auf dem FTP-Server stehen, colCheck ist eine Spalte mit einer Checkbox.

Wenn also colCheck = false ist, soll zur nächsten Zeile gegangen werden (daher die for-Schleife).

Edith meint, ich könnte auch den einen end-Eintrag etwas weiter nach unten setzen, soll dass bei colCheck = True alles bearbeitet wird




Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty

Geändert von FBrust (18. Aug 2014 um 14:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#8

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 14:43
Edith meint, ich könnte auch den einen end-Eintrag etwas weiter nach unten setzen, soll dass bei colCheck = True alles bearbeitet wird
Jupp, vorher wurde ja nur strFile gesetzt, wenn colCheck=True und ansonsten stand dort nichts, oder der letzte verarbeitet Dateiname drin, womit dann entweder ohne Dateiname, oder nochmals mit dem Selben alles abgearbeitet wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 14:57
Hallo,

Zitat:
oder auch nicht
Ist es das nun, oder nicht?

Und wenn du es nicht weißt, warum machst du dann nicht mal einen Binärvergleich der Dateien und schaust nach ob und was sich da unterscheidet?
Ich habe jetzt mit fc einen Dateivergleich durchgeführt, demnach sind die beiden Dateien identisch, aber Excel (2010) kann nur eine der beiden einwandfrei öffnen.

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Excel-Datei per FTP herunterladen -> zerstört (oder auch nicht)

  Alt 18. Aug 2014, 15:41
.. bilde mal einen Hash (md5, sha1) über jede Datei.
Sind sie dann auch noch identisch?

Grüße
Klaus
Klaus
  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 02:15 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