Fragen zum Umgang mit SelectDirectory (war: Brauche hilfe beim Quellcode!)



  • String file = EditPfad->Text; // ein neuer String mit dem Namen file, dem gleich der Inhalt von EditPfad zugewiesen wird 
    
    int i = file.LastDelimiter("\\"); // Im Dateinamen mit Pfad wird nach dem letzten Backslash gesucht
    
    String file2 = file.SubString(i + 1, file.Length() - i); 
    // Aus dem Dateinamen mit Pfad wird der Teil extrahiert und in file2 kopiert, 
    // der nach dem Backslash kommt. Sprich : In file2 steht nur noch der Dateiname, ohne Pfad. 
    
    String dir = "", root = ""; //// Leere Strings werden angelegt
    
    if (SelectDirectory("Wählen Sie einen neuen Pfad aus", String(root), dir)) 
    // Dem Benutzer wird ein Dialog angezeigt, wo er ein Verzeichnis auswählen soll. Das Ergebnis wird in dir zurückgegeben. Nur wenn der Benutzer den Dialog 
    nicht abbricht, wird kopiert. 
    
     {
       dir += "\\" + file2; // Der neue Pfad wird um Backslash und Dateiname ergänzt
    
       bool ok = CopyFile(file.c_str(), dir.c_str(), false); // Datei wird von alt (file) nach neu (dir) kopiert (überschreiben), die Rückgabe gibt an, ob Erfolg oder nicht 
    
                if(ok)
                       ShowMessage("Kopiervorgang erfolgreich abgeschlossen !");
    
                    else
                        ShowMessage("Kopiervorgang nicht erfolgreich !");
             }
             else
             {
               ShowMessage("Kopiervorgang vom Benutzer abgebrochen !");
             }
    
    1. Wie kann man dieses hier genauer erklären ?
      file.SubString(i + 1, file.Length() - i); was passiert da genau?

    2. Wofür wird root gebraucht?
      String dir = "", root = "";

    3. Wie kann man das erklären?
      (file.c_str(), dir.c_str(),

    Ich wäre euch sehr dankbar, wenn ihr mir meine Fragen so beantworten könntet, dass ich es auch verstehe.

    /Edit akari : Bitte aussagekräftigen Titel verwenden! Bitte Code-Tags verwenden (sfds )!



  • 1. Es wird ein Teil des alten Strings einem neuen String zuwiesen. Und zwar der Teil, der bei i + 1 beginnt und bis zum Ende des Strings geht. Das -1 ist meiner Meinung nach falsch, da die 'Zählung' bei AnsiStrings ausnahmsweise bei 1 beginnt.

    2. dir ist die Variable, die nach dem Ausführen des SelectDirectory-Dialogs den ausgewählten Pfad enthält. root ist der Ausgangspfad, der initial im SelectDirectory-Dialog angezeigt wird.

    3. c_str() gibt dir einen Zeiger auf ein char, mit dem Inhalt des AnsiStrings. Dieser Zeiger ist nicht persistent.

    Steht aber auch alles in der Hilfe, die muss man nur mal aufrufen.

    Gruß KK



  • Hallo

    1. AnsiString::SubString, mehr dazu auch in der Builder-Hilfe
    2. Root gibt an, auf welchen Pfad die Auswahl beschränkt sein soll. Wenn root leer ist, kann der Benutzer einen beliebigen Pfad aus dem ganzen Dateisystem auswählen
    3. AnsiString::c_str() ...
    4. Deine Nachfragen hättest du auch noch in deinen Ursprungsthread stellen können.

    bis bald
    akari


Anmelden zum Antworten