Thema: Delphi TRegistry

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TRegistry

  Alt 1. Aug 2003, 23:36
Moin onlinehome,

so unmittelbar kann ich Dein Problem nicht nachvollziehen.
Das was der User eingegeben hat steht doch im Standardwert des Keys, den Du ja auslesen kannst.

Das hier wäre also zum Beispiel schon einmal falsch


Delphi-Quellcode:
  if Reg.Openkey('\MySQL_Tool'+'\mysqlbinpath',False) then
config.JvDirectoryEdit1.Text := Reg.readString('mysqlpath');
es müsste doch

Delphi-Quellcode:
  if Reg.Openkey('\MySQL_Tool'+'\mysqlbinpath',False) then
config.JvDirectoryEdit1.Text := Reg.readString('');
weil Du die Daten ja in den Standardwert des Keys schreibst, musst Du sie natürlich auch wieder aus diesem auslesen.

Ausserdem fehlen noch die Resourcenschutzblöcke.

Vielleicht besser Du schreibst es so, zumal mir absolut nicht klar ist, was Du mit Deiner Zuweisung an a willst:

Delphi-Quellcode:
  Reg:=TRegistry.Create;
  try
    Reg.Rootkey:=HKEY_CURRENT_USER;
    if Reg.Openkey('\MySQL_Tool'+'\mysqlbinpath',False) then try
      config.JvDirectoryEdit1.Text := Reg.readString('');
    finally
      Reg.CloseKey;
    end;
    if Reg.Openkey('\MySQL_Tool'+'\mysqlhost',False) then try
      config.Edit1.Text := Reg.readString('');
    finally
      Reg.CloseKey;
    end;
    //...
  finally
    Reg.Free;
  end;
Noch einfacher ginge es, wenn Du die Werte nicht im Standardwert eines Keys speichern würdest, sondern das, was Du jetzt als Keynamen nimmst, als Valuenamen benutzt:

Delphi-Quellcode:
  Reg:=TRegistry.Create;
  try
    Reg.Rootkey:=HKEY_CURRENT_USER;
    if Reg.Openkey('\MySQL_Tool',False) then try
      config.JvDirectoryEdit1.Text := Reg.readString('mysqlbinpath');
      config.Edit1.Text := Reg.readString('mysqlhost');
    finally
      Reg.CloseKey;
    end;
    //...
  finally
    Reg.Free;
  end;
Wenn Du dann noch diese Werte nicht direkt in die Funktionen schreibst, sondern Dir Konstanten dafür anlegst, verringerst Du auch die Gefahr von Vertippern.

z.B.

Delphi-Quellcode:
const
  _sMySqlBinPath = 'mysqlbinpath';
  _sMySqlHost = 'mysqlhost';

begin
  Reg:=TRegistry.Create;
  try
    Reg.Rootkey:=HKEY_CURRENT_USER;
    if Reg.Openkey('\MySQL_Tool',False) then try
      config.JvDirectoryEdit1.Text := Reg.readString(_sMySqlBinPath);
      config.Edit1.Text := Reg.readString(_sMySqlHost);
    finally
      Reg.CloseKey;
    end;
    //...
  finally
    Reg.Free;
  end;
end;
Stehen die Konstanten global zur Verfügung kannst Du sie beim Schreiben und Lesen der Daten verwenden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat