Dateiname modifizieren



  • Hallo!
    Ich möchte mit SaveDialog zwei Dateien mit verschiedenen Extensions erzeugen,
    also z.B. Name.ex1 und Name.ex2.
    Mein Code kreiert aber diese Dateien: Name.ex1 und Name.ex1.ex2
    Ich stehe mit den Strings/Pointern auf dem Schlauch und bitte um Hilfe!
    Danke!

    if( SaveDialog1->Execute() )
        {
            char * string1;
            char * string2;
            char * extension1 = ".ex1";
            char * extension2 = ".ex2";
            string1 = SaveDialog1->FileName.c_str();
            string2 = SaveDialog1->FileName.c_str();
            strcat(string1, extension1);
            strcat(string2, extension2);
    
            ofstream Outfile1;
            Outfile1.open(string1);
            /*
            */
            Outfile1.close();
    
            ofstream Outfile1;
            Outfile1.open(string1);
            /*
            */
            Outfile1.close();
         }
    


  • Hallo

    Vergiß die char-Pointer, und arbeite mit VCL-Strings. Und wenn du dann noch die Funktion ChangeFileExt benutzt, brauchst du fast gar nichts selber zu programmieren.

    bis bald
    akari



  • Stimmt, mit strings gehts problemlos, danke!!!

    AnsiString string1, string2;
    
    string1 = SaveDialog1->FileName.c_str();
    string2 = SaveDialog1->FileName.c_str();
    strcat(string1, ".ext1");
    strcat(string2, ".ext2");
    
    ofstream Outfile;
    Outfile.open(string1.c_str());
    ...
    Outfile.close();
    
    Outfile.open(string2.c_str());
    ...
    Outfile.close();
    


  • Hallo

    Bitte nicht strcat auf einen VCL-String anwenden! Ich wundere mich, das du schreibst das würde funktionieren 😕
    Geht doch auch viel einfacher :

    AnsiString string1 = SaveDialog1->FileName + ".ext1";
    

    Natürlich solltest du dir auch mal überlegen, was passiert, wenn in SaveDialog1->FileName bereits eine Dateierweiterung enthalten ist?

    bis bald
    akari


Anmelden zum Antworten