NMFTP->FTPDirectoryList - Dateien von Verzeichnissen unterscheiden??



  • Hallo zusammen,

    ich baue über die NMFTP Komponente eine Verbindung zum FTP Server auf und bekomme über den NMFTP->List() alle Dateien und Verzeichnise in der Liste NMFTP->FTPDirectoryList->names zurück.
    Nur wie kann ich da Verzeichnisse von Dateien unterscheiden? Natürlich kann ich einfach gesagt alles was keine File Extension hat als Verzeichnis deklarieren, aber das ist nur ne 90% lösung, oder?

    Danke für tipps & tricks...

    liebe grüsse

    Thomas



  • Suchfunktion benutzen! Z.B.
    http://www.c-plusplus.net/forum/viewtopic.php?t=80844&highlight=ftpdirectorylist

    Oder eben gleich die Hilfe.



  • for (I = 0; I <= (NMFTP1->FTPDirectoryList->name->Count - 1); I++)

    {
    temp = NMFTP1->FTPDirectoryList->Attribute->Strings[I];
    temp = Trim(temp);
    temp = UpperCase(temp);
    if (temp[1] == 'D')
    { //schreibe irgendwo hin
    }
    }



  • @Horscht:
    Dankeschön
    if(UpperCase(Trim(NMFTP1->FTPDirectoryList->Attribute->Strings[I].Substring(1, 1)))=='D') {// jeah ein verzeichniss ;o)};

    @Jansen:
    Sorry hab sowohl gesucht nach FTPDirectoryList sowie in der FAQ geguckt aber bei dem Topic hab ich die Lösung nicht ansatzweise vermutet.



  • Zitat aus o.g. Thread, letzter Beitrag:

    Weil dann weiss ich wie man, das auf Ordner prüft(die Attribute sind der Schlüssel zum Erfolg).

    Selbst wenn du das nicht verstanden hättest wäre statt eines neuen Threads zum selben Thema eine einfache Nachfrage in besagtem Thread ausreichend gewesen.



  • Hallo,

    ich versuche mal der Regel hier nachzukommen (ein Thread pro Thema) und vielen von euch dürfte das trivial erscheinen. Bitte keine genervten flames, danke.

    Das Aufbauen einer Verbindung klappt wunderbar, ParseListe = TRUE, FTPDirectoryList ist mit einem Memofeld verknüpft (zu Debugzwecken) und zeigt mir die Verzeichnisliste des Servers auch an. Nun würde ich aber gerne nur mit dem Ordner bzw. Dateinamen weiterarbeiten verstehe aber nicht so ganz wie ich das machen soll. Geht das auch über Attributs? Ich denke nein, oder?

    Das steht in dem Memo:

    drw-rw-rw- 1 user group 0 Jun 7 02:08 .
    drw-rw-rw- 1 user group 0 Jun 7 02:08 ..
    drw-rw-rw- 1 user group 0 Jun 7 02:10 1.3

    Ich möchte nur mit den Ordner und Dateinamen arbeiten, (in diesem Falle also . .. und 1.3) -> wie kriege ich das hin, dass z.B. in einem Array z.b. Index 4 immer der Verzeichnis/Dateiname ist?
    Bin mir nicht sicher ob einigermaßen klar wurde, was ich will. Aber falls mir da jemand weiterhelfen kann, bitte!

    Ich habe auch schon mit Stringlists rumgeflashed, da is mir aber die Dokumenation nicht so einleuchtend...



  • Hallo

    Du kannst die Verzeichnisse von den Dateien durch das erste Zeichen der Rechteliste unterscheiden. dort steht bei Verzeichnissen ein d, ansonsten ein Bindestrich. Das ist eine UNIX-typische Rechteanzeige.
    Wie das technisch unterschieden werden kann, hat bereits Horscht geschrieben.

    bis bald
    akari



  • da gibts noch das L für link... kannst du genauso behandeln wie D bzw ist da noch B un C welches für gerätefiles steht (linux e.c.t) diese solltest du ganz ausschließen da du sie eh nicht arbeiten kannst



  • Hallo,

    danke für die Antworten, das ist aber nicht das was ich vorhabe.
    Anders gesagt: Ich möchte eine Variable machen die den Wert des Datei/Ordnernamens beinhaltet. Sonst nichts. Keine Rechte, keine Datumsangaben, nur den Datei/Ordnername!



  • Luusah schrieb:

    Keine Rechte, keine Datumsangaben, nur den Datei/Ordnername!

    Na dann nimm halt name statt Attribute!
    Wie in den Beispielen unter o.g. Link zu sehen.

    Junge Junge ... 😉



  • Sorry, steh da jetzt aufm Schlauch... 😕
    Bisher gings doch um die Umwandlung von StringList in was anderes, oder?



  • Memo1->Lines = NMFTP1->FTPDirectoryList->name;
    AnsiString ErsterName = NMFTP1->FTPDirectoryList->name->Strings[0];
    MeineStringList = NMFTP1->FTPDirectoryList->name;
    AnsiString DritterName = MeineStringList->Strings[2];
    


  • Vielen vielen Dank!


Anmelden zum Antworten