Checkbox, Problem beim Status ändern
-
Hi erst mal.
Also ich habe ein Problem bei dem ich nicht durchblicke, ich sehe den Fehler nicht.Also es ist so, ich habe in meine Programm paar Checkboxen, der Status (Checked=true/false)wird per Button klick in eine ini gespeichert und beim Laden der Programm abgeruffen.
Also geschrieben wird es richtig und abgelesen auch, aber an dem Status ändert sich nichts.void __fastcall TForm1::FormCreate(TObject *Sender) { GetModuleFileName(NULL,buf,MAX_PATH); *strrchr(buf,'\\') = '\0'; strcat(buf,"\\randomlol.ini"); //CheckBoxes GetPrivateProfileString("lol-Settings","CheckBox1",NULL,checkb1,sizeof(checkb1),buf); GetPrivateProfileString("lol-Settings","CheckBox2",NULL,checkb2,sizeof(checkb2),buf); GetPrivateProfileString("lol-Settings","CheckBox3",NULL,checkb3,sizeof(checkb3),buf); //Enter GetPrivateProfileString("lol-Settings","Enter1",NULL,entercb1,sizeof(entercb1),buf); GetPrivateProfileString("lol-Settings","Enter2",NULL,entercb2,sizeof(entercb2),buf); GetPrivateProfileString("lol-Settings","Enter3",NULL,entercb3,sizeof(entercb3),buf); //Checkbox1 if(checkb1=="1") { ersteZeile->Checked=true; } if(checkb1=="0") { ersteZeile->Checked=false; } //Checkbox2 if(checkb2=="1") { zweiteZeile->Checked=true; } if(checkb2=="0") { zweiteZeile->Checked=false; } //Checkbox3 if(checkb3=="1") { dritteZeile->Checked=true; } if(checkb3=="0") { dritteZeile->Checked=false; } //Enter if(entercb1=="1") { enter1->Checked=true; } if(entercb1=="0") { enter1->Checked=false; } if(entercb2=="1") { enter2->Checked=true; } if(entercb2=="0") { enter2->Checked=false; } if(entercb3=="1") { enter3->Checked=true; } if(entercb3=="0") { enter3->Checked=false; } }
Komischerweise hab ich genau so vor paar wochen gemacht und es hat funtioniert, jetzt geht es aber nicht.
Ich habe noch ein paar Edit Fälder da funtioniert es auch prima.
Ich habe GetPrivateProfileString getestet, es liest alles richtig ab aber danach passiert nichts.mfg
Igromanru
-
Ich kann mich täuschen, aber ich glaube, dass Deine If-Abfragen so nicht funktionieren, da Du auf String vergleichst(? hab grad keine BCB-Hilfe zur Hand). Versuch doch mal die Abfragen so zu gestalten:
if(CheckBox->Checked == true) ...
-
igromanru schrieb:
void __fastcall TForm1::FormCreate(TObject *Sender) { ... GetPrivateProfileString("lol-Settings","CheckBox1",NULL,checkb1,sizeof(checkb1),buf); ... //Checkbox1 if(checkb1=="1") { ersteZeile->Checked=true; } if(checkb1=="0") { ersteZeile->Checked=false; } ...}
Komischerweise hab ich genau so vor paar wochen gemacht und es hat funtioniert, jetzt geht es aber nicht.
Ich habe noch ein paar Edit Fälder da funtioniert es auch prima.
Ich habe GetPrivateProfileString getestet, es liest alles richtig ab aber danach passiert nichts.mfg
IgromanruDeine Variable checkb1 ist wahrscheinlich ein char array. Da kannst Du nicht mit dem Vergleichsoperator gegen ein Stringliteral vergleichen. Dabei kommt immer false heraus. Du mußt dann schon mit strcmp arbeiten. Also
if(!strcmp(checkb1,"1")) { ersteZeile->Checked=true; }
Gleiches gilt dann auch für die anderen Variablen bzw checkboxes.
mfg Martin
-
Hallo
Wenn du statt den rohen WinAPI-Funktionen den VCL-Wrapper TIniFile verwendest, kannst du dir diesen Umweg über C-Strings sparen.
bis bald
akari
-
mgaeckler schrieb:
Deine Variable checkb1 ist wahrscheinlich ein char array. Da kannst Du nicht mit dem Vergleichsoperator gegen ein Stringliteral vergleichen. Dabei kommt immer false heraus. Du mußt dann schon mit strcmp arbeiten. Also
if(!strcmp(checkb1,"1")) { ersteZeile->Checked=true; }
Gleiches gilt dann auch für die anderen Variablen bzw checkboxes.
mfg Martin
Vielen Dank. Es ist wirklich ein array, ich wusste nicht, dass es einfach so zu vergleichen nicht geht. Auf jeden Fall funktioniert es jetzt.
akari schrieb:
Hallo
Wenn du statt den rohen WinAPI-Funktionen den VCL-Wrapper TIniFile verwendest, kannst du dir diesen Umweg über C-Strings sparen.
bis bald
akariDanke, wusste nicht, dass VLC so was hat, werde bei nächsten Projekt daran denken.