Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Registry Problem (https://www.delphipraxis.net/104457-registry-problem.html)

dazar_t 4. Dez 2007 15:17


Registry Problem
 
Guten Tag..

Ich wollte mir einen kleinen wecker proggen, doch hab ich ein problem...
Wenn ich die Check-box einmal anklicke geht es doch wen ich sie dan wieder anklicke also unchecke kommt bei meinem Code immer eine Fehlermeldung :Fehler beim Setzten der Daten für 'Wecker'
Ich arbeite zum ersten mal mit der Registry und kan mir leider nicht weiter helfen.
Ich wollte nämlich das wenn man die CheckBox klickt der wert (1-0,an-aus)gespeichert wird und beim start des Programmes entweder die CheckBox checked ist oder ebend leer.

Hier der Code
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    CheckBox1: TCheckBox;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    {Private-Deklarationen }
  public

  end;

var
  Form1: TForm1;
  Reg : TRegistry;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
sound: String;
begin
OpenDialog1.Execute;
sound := opendialog1.FileName;
Edit1.Text := sound;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\DaZaRt', True);
Label2.Enabled:=False;
Button1.Enabled:=False;
Button2.Enabled:=False;
Edit1.Enabled:=False;
end;



procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
  begin
    Label2.Enabled:=True;
    Button1.Enabled:=True;
    Button2.Enabled:=True;
    Edit1.Enabled:=True;
    try
      Reg.WriteString('Wecker','1');
    finally
      Reg.Free;
    end;
  end
else
  begin
    Label2.Enabled:=False;
    Button1.Enabled:=False;
    Button2.Enabled:=False;
    Edit1.Enabled:=False;
    try
       Reg.WriteString('Wecker','0');
    finally
      Reg.Free;
    end;
  end;
end;

end.

Jelly 4. Dez 2007 15:39

Re: Registry Problem
 
Beim ersten Checkbox Klick rufts du ein
Delphi-Quellcode:
reg.Free ;
auf, und deshalb ist bei einem weiteren Klick deine Referenz zu reg verloren... Folge: Es knallt dir ne Fehlermeldung um die Ohren.

dazar_t 4. Dez 2007 15:45

Re: Registry Problem
 
Achjaaa xD
Danke schön

Luckie 4. Dez 2007 19:46

Re: Registry Problem
 
Warum ist die Variable reg überhaupt global? Hättest du sie lokal deklariert, wäre dir das nicht passiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz