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 DingeAufgabe1=true
Aufgabe2=false
Aufgabe3=truenun 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=trueund 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=trueWenn 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