![]() |
"Ungültige Zeigeroperation" beim Ändern des CheckB
Hallo,
mich beschäftigt gerade folgende Routine, die den Status einer Checkbox aus einer INI-Datei lesen soll:
Delphi-Quellcode:
Das führt zu der Fehlermeldung der Klasse EInvalidPointer:
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '\init.ini');
ed_Pfad.Text := ini.ReadString('SAVE', 'Quelle', 'Pfad zur Quelldatenbank'); ed_Ziel.Text := ini.ReadString('SAVE', 'Ziel', 'Name der Zieldatenbank auf dem MySQL-Server'); s := ini.ReadInteger ('SAVE', 'Autostart', 0); if s = 0 then cb_autostart.State := cbUnChecked else cb_autostart.State := cbChecked; s := ini.ReadInteger ('SAVE', 'DeleteZiel', 0); if s = 0 then cb_DelZiel.State := cbUnChecked else cb_DelZiel.State := cbChecked; ini.Free; "Ungültige Zeigeroperation" Breakpoint steht nach "Application.Run", also nicht direkt auf der obigen Routine, die im OnCreate einer Form läuft. Was ich bereits versucht habe: - die Routine ins OnPaint oder OnShow-Ereignis verlegt - ursprünglich wurde direkt ein String aus der Ini gelesen, und in einen Boolean umgewandelt und so an die Eigenschaft "cb_Autostart.Checked" übergeben Weiss jemand Rat? Ich bin ehrlich gesagt n bissel verzweifelt :( danke tyler |
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
Hai Tyler,
es wundert mich das Du den Code überhaupt Comilier kannst. TCheckBox.State := cbUnCheked meldet mir sofort der Compiler als Fehler. Auf jeden fall geht es bei mir so ohne Probleme:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var ini : TIniFile; s : Integer; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'init.ini'); try ed_Pfad.Text := ini.ReadString('SAVE', 'Quelle', 'Pfad zur Quelldatenbank'); ed_Ziel.Text := ini.ReadString('SAVE', 'Ziel', 'Name der Zieldatenbank auf dem MySQL-Server'); s := ini.ReadInteger ('SAVE', 'Autostart', 0); cb_autostart.Checked := s = 1; s := ini.ReadInteger ('SAVE', 'DeleteZiel', 0); cb_DelZiel.Checked := s = 1; finally ini.Free; end; end; |
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
und warum lässt du es nicht bei checkbox1.checked:=false?
|
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
Zitat:
Beim 1. Versuch hab ich es folgendermassen probiert:
Delphi-Quellcode:
das führte aber wie gesagt genau zu dem gleichen Fehler.
cb_Autostart.Checked := StrToBool ( ini.ReadString('SAVE', 'Autostart', 'False');
Vielen Dank auch für deinen Code, aber damit wird die Checkbox ja grundsätzlich auf TRUE gesetzt, oder nicht:
Delphi-Quellcode:
cb_autostart.Checked := s = 1;
|
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
Zitat:
|
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
achso.. also ein verkürztes IF?
IF S = 1 THEN CHECKED := TRUE; ergibt CHECKED := S = 1 Wenn ja, dann wieder was interessantes dazugelernt :D |
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
jaaaaaa :dp: :hello: :cheers: :dancer:
|
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
löl :cyclops:
/me *hocherfreut-ist* (Die Mod´s übersehen jetzt hoffentlich das bissel gespamme ;) :prosit:) |
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
Zitat:
Das ganze läuft darauf hinaus das eine boolesche Operation durchgeführt wird. Diese liefert logischerweise immer ein True oder ein False.
Code:
Mit diesem "wissen" kann man oftmals eine unnötige IF-THEN-ELSE konstruktion umgehen.
1 = 1 := True
1 = 2 := False 1 <> 2 := True; 1 < 2 := True 1 > 2 := False 'Hallo' = 'blubb' := False; usw. |
Re: "Ungültige Zeigeroperation" beim Ändern des Ch
ich würd das so machen:
Delphi-Quellcode:
checkbox1.checked := ini.ReadBool('Save','Autostart',True);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz