Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: einzelnen TRegistry-Wert auslesen

  Alt 17. Mär 2008, 21:08
Zwei sehr bedenkliche Sachen:
1. registry2 wird ausserhalb der Prozedur erzeugt, aber innerhalb freigegeben.
2. Die erzeugte Stringliste wird nicht wieder frei gegeben.

Debug deinen Code doch mal bzw. bau eine ordentliche Fehlerbehandlung ein:
Delphi-Quellcode:
uses
  Registry;

procedure Foobar;
var
  reg: Tregistry;
  sl: TStringList;
begin
  reg := TRegistry.Create(KEY_READ);
  try // try-finally Registry
    reg.rootkey:= HKEY_LOCAL_MACHINE;
    if reg.OpenKey('Software\Borland', False) then
    begin
      sl := TStringlist.Create;
      try // try-finally Stringlist
        try // try-except Registry + Stringlist
          reg.GetKeyNames(sl);
          sl.SaveToFile('D:\test.txt');
        except // try-except Registry + Stringlist
          raise Exception.Create(SysErrorMessage(GetLastError));
        end;
      finally // try-finally Stringlist
        sl.Free;
      end;
      reg.CloseKey;
    end
    else // raise exception if reg.OpenKey fails
      raise Exception.Create(SysErrorMessage(GetLastError));
  finally // try-finally reg
    reg.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    Foobar;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
end;
Fehler korrigiert. Dummer DP Debugger/Compiler.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat