![]() |
Problem mit Registry
Hi!
Seit ich folgenden Code hinzugefügt habe, kommt immer ein Laufzeitfehler und ich habe keine Ahnung warum. Könnt ihr mir vllt helfen?
Delphi-Quellcode:
//EDIT: Der Fehler tritt nur auf, wenn CheckBox1.Checked:=False ist oder wärend der Laufeit wird.
procedure TForm1.CheckBox1Click(Sender: TObject);
var sl: TStringList; RButton,CBox,CzBox:String; MyReg:TRegistry; begin //Einstellungsüberprüfung: if RadioButton1.Checked=true then RButton:='1'; if RadioButton2.Checked=true then RButton:='2'; if RadioButton3.Checked=true then RButton:='3'; if RadioButton4.Checked=true then RButton:='4'; if CheckBox2.Checked=true then CBox:='1' else CBox:='0'; if CheckBox1.Checked=true then CzBox:='1' else CzBox:='0'; //Schreiben: sl:=TStringList.Create; try sl.Add(RButton); sl.Add(CBox); sl.Add(IntToStr(ListBox1.Items.Count)); sl.Add(CzBox); sl.SaveToFile(GAD+'SettingsData.txt'); finally sl.free; end; //-------------------------------------------------------- {Seit ich den Code (ab hier) eingefügt habe kommt es zu einem Laufzeitfehler!!!} if CheckBox1.Checked=True then begin MyReg:=TRegistry.Create; try MyReg.RootKey:=hkey_local_machine; MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true); MyReg.WriteString('bla',Application.ExeName); MyReg.CloseKey; finally MyReg.Free; end; end else begin MyReg.RootKey:=hkey_local_machine; MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false); if MyReg.ValueExists('bla') then MyReg.DeleteValue('bla'); MyReg.CloseKey; end; end; Danke schon mal im voraus für eure Hilfe! MfG Cruso |
Re: Problem mit Registry
Das ist jetzt ein bisschen anstrengend sich das alles Zeiechenweise reinzufahren ohne einen Leitpfaden, woran es leigen keonnte. Debugge das programm dochmal Zeilenweise.
Also klicke auf den grauen Rand im Quelltext and der Stelle, wo der von die gepostete qt bginnt. Zeile faerbt sich rot. Dann kompilieren+starten. Das Programm laeuft, bis es die von dir markierte Zeile erreicht. Du kannst mit F7 dann jewals eine Zeile weiter gehen. Bis der Fehler auftritt. Dann wissen wir wenigstens schonmal in welcher Zeile es passiert. EDIT: vergiss es, ich sehe den Fehler gerade: In deinem else=block rufst du den Konstruktor deines registry=Objektes nie auf. Das machst du in dem if von der checkbox1... |
Re: Problem mit Registry
Hallo Cruso!
Du hast die If - Clause an der falschen Stelle eingebaut. Du hast die Überprüfung, ob Checkbox1 gecheckt ist außen rum gelegt. Du creierst das TRegistry-Objekt nur, wenn checked, greifst aber auch bei not checked darauf zu. Es funktioniert folgendermaßen:
Delphi-Quellcode:
Hope it helps
MyReg:=TRegistry.Create;
try MyReg.RootKey:=hkey_local_machine; MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true); try if CheckBox1.Checked then begin MyReg.WriteString('bla',Application.ExeName); end else begin if MyReg.ValueExists('bla') then begin MyReg.DeleteValue('bla'); end; end; finally MyReg.CloseKey; end; finally MyReg.Free; end; onlinekater //edit: yankee war schneller :( Hoffe, der Code hilft Dir weiter. |
Re: Problem mit Registry
Danke an euch beide! Jetzt funktioniert es.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 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-2025 by Thomas Breitkreuz