Variablen in Dateien Speichern und auslesen



  • Hallo,
    ich habe mit SelectDirectory den aktuellen Pfad meiner ini Datei ermittelt.
    Nun möchte ich wenn man auf den Button Load klickt, dass die Variablen der jeweiligen Editfelder ausgelesen und übergeben werden.

    Als Beispiel, in der ini steht Editfeld1=hallo
    Nun klicke ich auf den Load Button und Edit1->Text kriegt hallo übergeben.

    Dies soll auch mit Speichern funktionieren.

    Bitte um einige Tipps oder Ratschläge, vielleicht auch ein kleines Snippet aber keine komplette Lösung.

    Mfg. Sven



  • Hallo,

    Schau doch einfach mal in die Hilfe zu TIniFile.



  • Hallo,
    danke für den Hinweis.
    Jedoch blicke ich da nicht ganz durch.

    Fangen wir mal bei etwas kleinem an.
    In der .ini stehen folgende Dinge

    Aufgabe1=true
    Aufgabe2=false
    Aufgabe3=true

    nun soll dieses ausgelesen werden und wenn Aufgabe1 true ist, wird die CheckBox1->Enabled=true, ansonsten false.
    (Aufgabe2=CheckBox2->Checked...)

    Mfg. Sven



  • Hallo

    Sollen wir das jetzt für dich machen oder zeigst du uns noch deine bisherigen Ideen?

    chrische



  • Hallo,
    mitlerweile bitte ich um eine Lösung.
    Ich werd einfach nicht draus schlau.

    Mfg. Sven



  • Hallo

    Aus der BCB-Hilfe kopiert und nur etwas angepasst...

    #include <inifiles.hpp>
    ...
    void __fastcall TForm1::ButtonSpeichernClick(TObject *Sender)
    {
      TIniFile *ini = new TIniFile("test.ini");
      ini->WriteBool( "Section", "Aufgabe1", CheckBox1->Checked );
      ini->WriteBool( "Section", "Aufgabe2", CheckBox2->Checked );
      ini->WriteBool( "Section", "Aufgabe3", CheckBox3->Checked );
      ini->UpdateFile();
      delete ini;
    }
    
    void __fastcall TForm1::ButtonLadenClick(TObject *Sender)
    {
       TIniFile *ini = new TIniFile("test.ini");
       CheckBox1->Checked =  ini->ReadBool( "Section", "Aufgabe1", false );
       CheckBox2->Checked =  ini->ReadBool( "Section", "Aufgabe2", false );
       CheckBox3->Checked =  ini->ReadBool( "Section", "Aufgabe3", false );
       delete ini;
    }
    

    bis bald
    akari



  • Schau Dir doch mal die Beispiele in der Doku an. In BCB6:

    __fastcall TForm1::TForm1(TComponent *Owner) : TForm(Owner)
    
    {
       TIniFile *ini;
       ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ) );
       Top     =  ini->ReadInteger( "Form", "Top", 100 );
       Left    =  ini->ReadInteger( "Form", "Left", 100 );
       Caption =  ini->ReadString( "Form", "Caption", 
                                   "Default Caption" );
       ini->ReadBool( "Form", "InitMax", false ) ?
             WindowState = wsMaximized : 
             WindowState = wsNormal;
       delete ini;
    }
    

    Da gibt es also ein ReadBool(). Das erste Argument wird die Sektion sein, das zweite der Name, der dritte der Wert der verwendet werden soll, wenn der Eintrag in der Datei fehlt. Jetzt musst Du doch nur noch das Ergebnis durch Dein checkbox->Checked ersetzen.



  • Hallo,
    danke akari!
    Also, ich hätte meinen Quellcode kopieren sollen, denn er ist identisch mit deinem.
    Also brauchte ich nix zu verändern....
    vielleicht liegts ja an der ini Datei?!

    In der ini Datei
    [CheckBoxes]
    Aufgabe1=true

    und hier der Code von meinem Projekt

    void __fastcall TForm1::LoadConfig1Click(TObject *Sender)
    {
     //Load Config - Click
    
     String dir = ""; //Default Path
    
     if (SelectDirectory("Choose the Folder with the main.ini", WideString(""), dir))
      dir=dir+"\\main.ini";//Dir get the full Path
    
     if(FileExists(dir))//If main.ini exist
      {
       //Here load the datas from the main.ini
    
       TIniFile *Ini = new TIniFile(dir);
    
       CheckBox1->Checked=Ini->ReadBool("CheckBoxes", "Aufgabe1",false);
    
       delete Ini;
      }
     else
      {
       dir="";//Remove the Path
       ShowMessage("main.ini could not be found");//Show the Message
      }
    }
    

    Wenn ich jedoch lade passiert nix mit der CheckBox1!

    Danke für folgende Antworten

    Mfg. Sven



  • Hallo,
    hab den Fehler gefunden...
    Es lag an der Ini-Datei

    [CheckBoxes]
    Aufgabe1=true

    Wenn ich Aufgabe1=1 schreibe funktioniert es, aber wenn der Aufruf doch ReadBool heißt, wieso erkennt er dann kein true sondern nur 1 und 0?

    Mfg. Sven


Anmelden zum Antworten