| Autor |
Beitrag |
Listing
      
Beiträge: 24
|
Verfasst: Di 26.12.06 22:35
Hi,
es tut mir leid dass ich euch jetzt noch einmal nerven muss
Aber ich habe dazu im ganzen Forum leider nichts gefunden:
Es geht darum per IndyFTP einen gesamten Ordner herunterzuladen
(dieser hat nähmlich weit über 1000 Dateien und Unterordner...)
Ich bin schon soweit, dass ich den Inhalt des Ordners mit Ftp.list
herrausbekomme und einzelne Dateien downloaden kann.
Viele Grüße und schöne Feiertage
Applikation:

|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 22:47
Wenn du den Inhalt des Ordners hast, wo ist dann das Problem? Ich hatte zunächst gedacht, es wäre das Problem diese Liste zu bekommen.
Dann musst du doch nur mit einer Schleife alle Dateien durchgehen.
Listing hat folgendes geschrieben: | es tut mir leid dass ich euch jetzt noch einmal nerven muss  |
Das Forum ist ja dafür da, Fragen zu beantworten 
|
|
Listing 
      
Beiträge: 24
|
Verfasst: Di 26.12.06 22:53
jaenicke hat folgendes geschrieben: | Wenn du den Inhalt des Ordners hast, wo ist dann das Problem? Ich hatte zunächst gedacht, es wäre das Problem diese Liste zu bekommen.
Dann musst du doch nur mit einer Schleife alle Dateien durchgehen.
Listing hat folgendes geschrieben: | es tut mir leid dass ich euch jetzt noch einmal nerven muss  | Das Forum ist ja dafür da, Fragen zu beantworten  |
der Inhalt ist "gecrypted"
1. Ich kann nicht zwischen Ordnern und normalen Dateien Unterscheiden
2. Der string ist iergendwie [ACCESS] 1 ftp ftp [iergendeine Anzahl an leerzeichen] [SIZE] [TIME] [FILE]
>> Wie kann ich das extrahieren? Ich finde da kein "wiederkehrendes Muster"
Danke schonmal
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 23:00
Oh, Moment, dann liste mal lieber so: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var FolderContents: TIdFTPListItems; begin Self.FTPClient.List(nil); FolderContents := Self.FTPClient.DirectoryListing; for i := 0 to FolderContents.Count - 1 do begin FolderContents.Items[i].FileName |
Und so weiter, damit kannst du dann ja arbeiten denke ich... 
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Di 26.12.06 23:05
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 23:08
Ach so, gut dass du den Dateityp ansprichst:
Bei meinem Source lässt sich der mit if FolderContents.Items[i].ItemType <> ditDirectory then feststellen...
// EDIT:
Ach so: Ich nehme an, dass du die ganzen zusätzlichen Infos erhälst, weil du beim List Befehl nicht als dritten Parameter (der heißt ja ADetails) False angegeben hast...
Wenn du da False angibst solltest du IMHO nur die Dateinamen erhalten...
|
|
Listing 
      
Beiträge: 24
|
Verfasst: Di 26.12.06 23:26
jaenicke hat folgendes geschrieben: | Self.FTPClient.List(nil);
|
Wofür steht denn da FTPClient??
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 23:28
Das ist das TIdFTPClient-Objekt, musst natürlich deinen Variablennamen nehmen
Da du deinen Quelltext nicht gepostet hast, kann ich den ja nicht wissen... 
|
|
Listing 
      
Beiträge: 24
|
Verfasst: Di 26.12.06 23:38
jaenicke hat folgendes geschrieben: | Das ist das TIdFTPClient-Objekt, musst natürlich deinen Variablennamen nehmen
Da du deinen Quelltext nicht gepostet hast, kann ich den ja nicht wissen...  |
Delphi-Quelltext 1: 2: 3:
| idFTP1.List(); FolderContents := idFTP1.DirectoryListing; ShowMessage('There are currently ' + IntToStr(FolderContents.Count) + ' items in the folder!'); |
Gibt immer aus "There are currently 0 Items in the folder!"
Wenn ich "Self." davorsetze sagt er
[Pascal Fehler] MainForm.pas(47): E2003 Undefinierter Bezeichner: 'idFTP1'
:-/
Moderiert von Christian S.: Quote- durch Delphi-Tags ersetzt
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.12.06 23:49
Delphi- statt Zitat-Tags wären schöner  . Aber das nur nebenbei.
Das Self brauchst du für eine lokale Variable nicht, das ist schon richtig.
Jedenfalls wirst du wohl das Verzeichnis nicht richtig gesetzt haben...
|
|
Listing 
      
Beiträge: 24
|
Verfasst: Di 26.12.06 23:56
jaenicke hat folgendes geschrieben: | Delphi- statt Zitat-Tags wären schöner . Aber das nur nebenbei.
Das Self brauchst du für eine lokale Variable nicht, das ist schon richtig.
Jedenfalls wirst du wohl das Verzeichnis nicht richtig gesetzt haben... |
Das verstehe ich jetzt nicht, wieso geht denn dann
Delphi-Quelltext 1: 2:
| IdFTP1.List(Slist,'*',false); und idFTP1.List('*', false); | nicht?
Was soll ich denn mit dem Verzeichnis anderes machen?
Ich kann ja auch ohne Probleme jetzt aus diesem Verzeichnis downloaden
Moderiert von Christian S.: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.12.06 00:00
Hmm, also wenn das Verzeichnis korrekt gesetzt ist, dann verstehe ich das auch nicht. Bei mir hat das Listing dann so funktioniert.
|
|
Listing 
      
Beiträge: 24
|
Verfasst: Mi 27.12.06 01:51
Mein Algorithmus funktioniert jetzt einigerma0en aber wenn ein Ordner in den er downloaden soll
noch nicht existiert gibt mein Programm sofort ein Fehler aus...
Kann ich das iergendwie verhindern?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.12.06 01:54
Du kannst ja mit ForceDirectories den Ordner vorher erstellen. ForceDirectories stellt sicher, dass der übergebene Ordner existiert (legt ihn und alle nicht existierenden Oberordner automatisch an).
|
|
Listing 
      
Beiträge: 24
|
Verfasst: Mi 27.12.06 03:37
jaenicke hat folgendes geschrieben: | | Du kannst ja mit ForceDirectories den Ordner vorher erstellen. ForceDirectories stellt sicher, dass der übergebene Ordner existiert (legt ihn und alle nicht existierenden Oberordner automatisch an). |
Hmm ok jetzt geht es endlich,
vielen Dank war nen schweres Teil aber ich bin froh, dass ich es gemacht hab.
Man lernt ja immer dazu.
Nach so langem Coden bin ich jetzt schon nen bisschen Müde
Also gute Nacht @ all und ein spezieller Dank an jaenicke
|
|