TiniFile instanzieren ohne Dateinamen



  • Hallo,
    ich habe ein Problem. Ich möchte eine IniDatei "virtuell" beschreiben und anschließend an einem Ort abspeichern. TIniFile hat die blöde eigenschaft, dass man ihr im Konstruktor schon den Dateinamen mitgeben muss. Den weiß ich aber zu dem Zeitpunkt noch nicht. Idee war jetzt, sich einfach die Werte als String zu holen und abzuspeichern.
    Allerdings funktioniert ReadSectionValues nicht. Folgenden Code habe ich ausprobiert:

    TStringList *save = new TStringList();
    TMemIniFile *config = new TMemIniFile("");
    config->WriteString("eggman", "test", "test1");
    config->ReadSectionValues("eggman", save);
    save->SaveToFile("C:\\datei.ini");
    


  • Muss es unbedingt TIniFile sein?
    Sonst einfach eine TStringList nehmen, zur Laufzeit die Einträge reinhängen, und am Ende mit SaveToFile speichern.

    TStringList* list = new TStringList;
    list->Add( "[" + Section + "]" );
    list->Add( Key + "=" + Value );
    list->Add( Key + "=" + Value );
    ...
    list->SaveToFile( "C:\\datei.ini" );
    

    und schon hast du eine Ini Datei 🙂

    grüssle 🙂



  • Naja,
    dass Problem ist, dass ich zwei Arten habe, wie das Objekt aufgerufen wird, in dem das IniFile behandelt wird.
    Zum einen beim Speichern ohne vorher zu öffnen (also ohne zu wissen wohin gespeichert wird) und einmal wird geöffnet.
    Gibt es denn eine möglichkeit, wie ich das umsetze, ohne das mein Objekt weiß ob es mit Datei oder ohne Datei instanziert wurde?



  • Benutze dafür doch einfach TMemIniFile.



  • Burkhi schrieb:

    Benutze dafür doch einfach TMemIniFile.

    Macht er doch schon... Aber auch TMemIniFile benötigt schon bei der Erzeugung einen Dateinamen.

    Ich weiß allerdings nicht, wie man nicht wissen kann, wo sich die Ini-Datei befindet. Wenn es denn gar nicht anders geht, würde ich die zuerst im Temp-Verzeichnis erzeugen und anschließend in das gewünschte Verzeichnis kopieren.


Anmelden zum Antworten