fopen mit unterordnern
-
Also ich nutze den Borland Builder 6.0 und arbeite grade mit C Code. Ich will eine Datei in einem Unterordner öffnen, dort was reinschrieben (anhängen) und wieder schliesen. Meine Funktion sieht so aus:
void einfügen(int Startnummer, String Text) { FILE *save; String Speicherort = "unterordner//" + IntToStr(Startnummer) + ".txt"; save = fopen(Speicherort.c_str(),"a+"); fputs(Text.c_str(), save); fclose(save); }
Er gibt aber immer bei fputs den fehler:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Server.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0048FF09 in Modul 'Server.exe'. Lesen von Adresse 01572138'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------Es hängt nach meiner Meinung damit zusammen, dass er die Datei nicht richtig öffnet, weil ich mal einen festen Namen ohne Unterordner genommen habe und da gings.
Ich habe den Unterordner noch nicht erstellt und die Datei exestiert auch nicht, dass dürfte aber eigentlich nicht das Problem sein.
Was mache ich falsch?
Stratege993
-
String Speicherort = "unterordner//" + IntToStr(Startnummer) + ".txt";
Hää?
Und wieso "//"?
-
Wenn ich blos ein / mache kommt der Fehler:
[C++ Fehler] Serverquell.cpp(46): E2380 Nicht abgeschlossene String- oder Zeichen-Konstante
Nach meinem Wissen muss man ein / durch ein / schützen deshalb 2 //. Wie muss ich es machen das es geht?
Stratege993
-
\\
-
Normal kann man die in Dateinamen sogar mischen ... geht echt.
Aber nicht "//".
-
so hab es jetzt in den 4 Varianten versucht: /,//,\,\\
Alles vier geht net, es kommt immer der Error in der fputs-Zeile:---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt RunServer.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0049058D in Modul 'RunServer.exe'. Lesen von Adresse 014920BC'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------Wie gesagt der Unterordner und die Datei exestieren nicht, das dürfte aber nicht das Problem sein, hoffe ich. Zu testzwecken habe ich mal den Unterordner erzeugt, dass hilft aber auch nichts
.
Ich weis nicht mehr weiter, was muss ich tun?
Stratege993
-
versuch mal
String Speicherort = ".//unterordner//" + IntToStr(Startnummer) + ".txt";
EDIT:
für: //
-----------------------
Linux: /
windows: \\
-
so, und das jetzt einfach mal ausgeben lassen
ausgebe: Speicherort
und sehen, wie das komisch aussieht
-
Geht leider auch nicht. Ich hab mal ohne unterordner getestet da gings. Werde es warscheinlich so machen müssen
(leider). Wenn noch jemand eine Idee hat bitte melden.
Sratege993
-
unterordner muss vorhanden sein oder mit der funktion _mkdir(...)
erstellt werden.Die Ordnerstruktun muss so aussehen:
/exeordner/meine.exe /exeordner/unterordner/*.txt
-
Juhu es geht. Hab den unterordner manuell erzeugt (Bei der einen Antwort hab ich zwar egschrieben, dass es auch nichts geholfen hat, das lag aber warscheinlich daran, dass ich ihn falsch benannt habe), dann geht es. Danke für euere Hilfe.
Stratege993