FTP - Verzeichnis erstellen ?



  • Hi@all

    Frage: Wie kann ich prüfen ob auf dem Server das Verzeichnis existiert - wenn nicht soll es angelegt werden - wenn ja soll hineingewechselt werden ?

    Codes funktionieren alle nicht ???

    // Try ... Catch
    try
    {
      NMFTP1->ChangeDir(datadir);
    }
    catch()
    {
     NMFTP1->MakeDirectory(datadir);
     NMFTP1->ChangeDir(datadir);
    }
    ...
    
    // If ... Then
     if(! NMFTP1->ChangeDir(datadir));
     {
     NMFTP1->MakeDirectory(datadir);
     NMFTP1->ChangeDir(datadir);
     }
    ...
    
    //On Failure
    void __fastcall TUploadForm::NMFTP1Failure(bool &Handled,
          TCmdType Trans_Type)
    
    case cmdChangeDir: StatusBar1->SimpleText = "ChangeDir failure"; NMFTP1->MakeDirectory(datadir); NMFTP1->ChangeDir(datadir); break;
    ...
    
    //--------
    

    Thx@all



  • Was konkret heisst "funktionieren alle nicht"?



  • Hi@Jansen

    Also ich starte FTP .
    Dann soll er ins Verzeichnis(datadir)wechseln .
    Ist es nicht vorhanden kommt eine Fehlermeldung .
    Also soll er es erstellen und rein wechseln .

    Andersrum .
    Ich starte FTP .
    Er soll ein Verezichnis (datadir) erstellen .und anschliessen rein wechseln .
    Ist das verezichnis jedoch bereits vorhanden kommt eine Fehlermeldung .

    Das ganze soll zur Laufzeit geschehen .Ohne des der anwender sieht was gerade passiert - also ohne Fehlermeldung wie: Verzeichnis exiert nicht oder Verzeichnis kann nicht erstellt werden .

    Das Programm soll eben selbstständig prüfen ob es was machen kann oder nicht und entsprechend reagieren .

    Also, wenn verzeichnis da ->dann rein wechseln ansonsten erst erstellen und dann reinwechseln .
    Bzw. Verzeichnis erstellen, wenn schon da dann eben gleich reinwechseln .

    Hoffe verständisvoll erklärt zu haben 🙄

    Thx@all



  • Das alles war mir eigentlich ziemlich klar. Ich wollte wissen, was an deinem Beispielcode genau nicht funktioniert.



  • Hi@Jansen

    Sorry - hab´s wohl falsch verstanden .

    Also das Problem ist, das ich immer eine Fehlermeldung bekomme.
    Z.Bsp. 550 File exists oder 550 File Not Exists

    Das soll aber der User nicht so sehen, sondern es soll im Hintergrund übergangen werden .

    Ja, an meinem Code ??? Das ist eben das Problem - es kommt keine eindeutige BCB Fehlermeldung - nur soviel er tuts eben nicht .

    if(!NMFTP1->ChangeDir(datadir))
      {
      NMFTP1->MakeDirectory(datadir);
      NMFTP1->ChangeDir(datadir);
      }
    

    [C++ Fehler] upload.cpp(32): E2109 Kein zulässiger Typ

    und bei

    void __fastcall TUploadForm::NMFTP1Failure(bool &Handled,
          TCmdType Trans_Type)
    
    case cmdChangeDir: NMFTP1->MakeDirectory(datadir); NMFTP1->ChangeDir(datadir); break;
    ...
    

    wenn ich ChangeDir aufrufe und es gibt dieses Verzeichnis nicht - wird OnFailure aufgerufen - da soll er es denn erstellen und anschließend hineinwechseln .
    Das Erstellen funktioniert zwar , aber er wechselt nicht hinein - sondern bringt immernoch die Fehlermeldung 550 File Not Exist

    Ich weiß nicht wie ich´s noch erklären soll .
    Hoffe Ihr könnt mir helfen.

    Thx@all



  • Hi@Jansen

    Hab´s rausbekommen - Fehler lag natürlich bei mir .🙄

    try
      {
       NMFTP1->ChangeDir(datadir);
      }
      catch(FTPException *e)
      {
       NMFTP1->MakeDirectory(datadir);
       NMFTP1->ChangeDir(datadir);
      }
    

    Hatte das Sternchen * bei der Catch-Anweisung vergessen .


Anmelden zum Antworten