[erledigt] NMFTP ftp-client Ordner inkl. Inhalt runterladen



  • Hallo,

    ich versuche mich grad an Borland C++.
    Ich habe testweise einen FTP Client geschrieben.

    Ich stehe zurzeit vor dem Problem:

    NMFTP1->Download(file, destinationfile); läd eine einzelne datei runter.
    Wie lade ich einen Ordner runter.

    Kann mir in dieser hinsicht eventuel einer Helfen?

    mfg



  • -remoten Ordnernamen ermitteln
    -lokalen gleichnamigen Ordner erstellen
    -remote in den Ordner wechseln
    -den remoten Ordnerinhalt auflisten
    -die Dateien gemäss der Liste einzeln nacheinander in den lokal erstellten Ordner herunterladen



  • Hi,
    Danke für deine Antwort.

    Was mach ich hier Falsch

    bool ftpClient::DownloadFolder(String Folder, String Path)
    {
       Path = Path + "/" + Folder;
    
       formMain->_FTP->ChangeDir(Path);
       formMain->_FTP->List();
    
       MsgBox("CurrentDir = "+formMain->_FTP->CurrentDir);
    
       for(int I = 0; I <= (formMain->_FTP->FTPDirectoryList->name->Count - 1); I++) {
          AnsiString checkDir = formMain->_FTP->FTPDirectoryList->Attribute->Strings[I];
          if(checkDir.SetLength(1) == "d"){
             DownloadFolder(formMain->_FTP->FTPDirectoryList->name->Strings[I], formMain->_FTP->CurrentDir);
          } //else if(checkDir.SetLength(1) != "d" && checkDir.SetLength(1) != "l")
           //MsgBox("Download: "+"File"+formMain->_FTP->FTPDirectoryList->name->Strings[I]);
       }
    
       return true;
    }
    

    Hier will ich erst einmal testen das er in alle Ordner geht.
    Tut er aber nicht. Der geht in den ersten und das wars.


  • Mod

    Hallo

    wie waere es mit dem Debugger 🙄

    mfg
    Klaus



  • hi,
    sorry Falsch Ausgedrückt.

    Es ist ein Logic Fehler. Debugger meldet nichts, da der Code ok ist.

    Ich habe eine Ordnerstruktur auf dem FTP angelegt:
    movie
    - first
    - second

    Wenn die Funktion nun Aufgerufen wird gibt er:

    1 CurrentDir = "/movie/first"
    2 CurrentDir = "/movie/first"

    Es muss jedoch
    1 CurrentDir = "/movie/first"
    2 CurrentDir = "/movie/second"
    ausgeben

    EDIT:

    am ende einfach

    formMain->_FTP->ChangeDir("..");
    formMain->_FTP->List();

    also vor return true;


  • Mod

    Hallo

    der Debugger meldet sicherlich niochts, wenn der Code okay ist

    Mit dem Debugger kannst du dein Programm zeilenweise
    nach Fehlern durchforsten

    so kann man solche Fehler finden

    erst ueberlegen - was macht diese Zeile
    dann schauen ob das so stimmt - mit dem Debugger

    mfg
    Klaus


Anmelden zum Antworten