[gelöst]TStringList->SaveToFile+TSaveDialog = Problem?
-
Hallo.
Mein Problem ist folgendes:
Mein Projekt beinhaltet u.a. einen Save- und einen Öffnungsdialog sowie mehrere StringListen. Wenn ich den Befehlliste->SaveToFile("/data/file.rfb");im Programm ausführe, funktioniert alles, aber wenn ich vorher den Save- oder Öffnungsdialog aufgerufen habe, ruft der SaveToFile-Befehl die Fehlermeldung "Datei /data/file.rfb kann nicht erstellt werden" auf!
Woran kann das liegen?
-
Code ?
-
Oh, sorry
Hab ich vergessen.Der ist etwas umfangreicher, aber ich hier die wichtigen Stellen:
(Der Code ist wahrscheinlich nicht sehr "sauber", aber ich bin noch Anfänger)Die Stinglist wird geöffnet
TStringList *XMLDatei = new TStringList(); //Viel Code, der nichts mit dem Problem zu tun hat*/ //... TStringList *loadxml = new TStringList; if(odlg_openxml->Execute()) //odlg: Open-Dialog { loadxml->LoadFromFile(odlg_openxml->FileName); XMLDatei = loadxml; }Die Funktion SaveToFTP wird geöffnet:
SaveToFTP(XMLDatei,URLzurXML,FTP);Funktion SaveToFTP:
void __fastcall SaveToFTP(TStringList* Data,String Onlinepath,TIdFTP *_FTP) { //Code, der nichts mit dem Problem zu tun haben kann */ //..... Data->SaveToFile("data/rf.rfb"); //HIER tritt der Fehler auf //Upload _FTP->Put("data/rf.rfb",Onlinepath,false); //schon wieder Code, der nichts mit dem Problem zu tun hat //... }
-
der Fehler kommt davon, daß du keine kompletten Pfadangaben verwendest sondern nur relative. TOpenDialog und TSaveDialog ändern den Pfad auf den die Anwednung zugreift für jede folgende Aktion von speichern oder Laden, das führt bei relativen Pfaden zu Fehlern
falls du auf einen Pfad zugreifst der im Verzeichnis der Anwendung liegt, kannst du dir mal die Funktion ExtractFilePath und die Eigenschaft Application->ExeName in der BCB-Hilfe ansehen
-
ok, vielen Dank! Funktioniert alles wie gewünscht.