Pfad einer Ini-Datei aus anderer Ini-Datei lesen
-
Hi,
ich habe eine Ini-Datei ohne Dateiendung: "pathinfo", die im Ordner, wo sich auch die Exe befindet angelegt wird, falls in meinem Programm Einstellungen exportiert werden.
Diese "pathinfo" sieht dann so aus:
[path]
config_ini=C:\test.iniAnhand des Pfads config_ini möchte ich dann die Einträge dieser Datei auslesen:
void TForm2::importSettingsFromFile(AnsiString filename) { FILE* file = fopen(filename.c_str(), "r"); if(file == NULL) { fclose(file); return; } fclose(file); TIniFile* ini = new TIniFile(filename); this->setting_one = ini->ReadString("setting", "one", "default");
Aber immer wenn die letzte Zeile aus diesem Codeausschnitt erreicht wird, erhalte ich eine Fehlermeldung: EAccessViolation.
Was mache ich falsch?
Der Dateiname wird richtig übergeben, das habe ich schon geprüft.
-
wird denn ini wirklich erzeugt? Nach meiner Kenntnis wird das IniFileobjekt nämlich nicht erzeugt, wenn das Ini-File nicht gefundenr werden konnte.
Prüf das doch z.B. mal so ab:
if (FileExists(filename)) { TIniFile* ini = new TIniFile(filename); this->setting_one = ini->ReadString("setting", "one", "default"); } else { //file not found... }
-
Hi,
die Datei existiert und wird auch gefunden. FileExists gibt true zurück.
Was könnte es sonst noch sein?
-
im Konstruktor passiert auf jeden Fall kein Fehler.
Ich habe gerade getestet, ob eine Exception im Konstruktor ausgelöst wird. Ist nicht der Fall.
Erst wenn ich Werte lesen will, tritt die Exception EAccessViolation auf.
-
Aha!
Der Fehler hat nichts mit dem ganzen Ini-Zeug zu tun.
Das Problem ist, dass ich den ausgelesenen Wert einem Element zuweise, das es zu diesem Zeitpunkt womöglich noch gar nicht gibt.
Jetzt muss ich umdenken