SIMON
Suche in der OH unter TRegIniFile. Dort findest du ein komplettes Beispiel.
Bye Klaus
Ich nehme an, daß "Delphi-Anfänger" nicht "Windows-Anfänger" ist. Das heißt,
Du hast schon mal regedit.exe gestartet und damit rumgespielt. Weiter weißt
Du auch, wie man in regedit Schlüssel anlegt und Werte einträgt.
Um das ganze in Delphi nachzuspielen, gehst Du so vor:
1. Die Registry-Unit einbinden:
uses
Registry;
{**
* Die Registry-Unit hatte in Delphi3 einen Bug: Wenn
* ein einzulesender String nicht existierte, wurde
* keine Exception erhoben/geworfen/wasauchimmer, sondern
* stillschweigend ein leerer String zurückgegeben.
*}
2. Eine beliebige Prozedur sieht so aus:
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_CLASSES_ROOT;
if (reg.OpenKey('\.doc', False)) then
begin
Caption := reg.ReadString('');
// Die Beschreibung einer Word-Datei
// Wahrscheinlich Word.Document.8 oder so
reg.CloseKey();
end;
reg.Free;
end;
3. Erweitere das Beispiel so, wie Du es brauchst:
reg.OpenKey(name, True) erzeugt einen Schlüssel
reg.WriteString(name, value) schreibt einen Wert
und das und viel, viel mehr steht in der Online-Hilfe.
Roland
>>[Registry-Zugriff]
>2. Eine beliebige Prozedur sieht so aus: [...]
Allerdings sollte man seine TRegistry per try-finally-end schützen, selbst in
Trivialbeispielen.
Tillmann
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, StdCtrls, ActnList, StdActns;
type
TForm1 = class(TForm)
StaticText1: TStaticText;
StaticText2: TStaticText;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); {Button Schreiben}
var regist: TRegistry;
begin
regist:=TRegistry.Create; {Schreiben}
regist.RootKey:=HKEY_CURRENT_USER;
regist.OpenKey('Software\MyName\MyProgram\1.0', true);
regist.WriteInteger('Left', Form1.Left);
regist.WriteInteger('Top', Form1.Top);
regist.free;
end;
procedure TForm1.Button2Click(Sender: TObject); {Button Lesen}
var regist: TRegistry;
begin
regist:=TRegistry.Create(KEY_READ); {Nur Lesezugriff}
regist.RootKey:=HKEY_CURRENT_USER;
try
regist.OpenKey('Software\MyName\MyProgram\1.0', false);
Form1.Left:=regist.ReadInteger('Left');
Form1.Top:=regist.ReadInteger('Top');
except
Form1.Left:=0;
Form1.Top:=0;
end;
{Die ausgelesenen RegistryWerte von Left und Top
sollen in den Textfeldern (Left in Label1 und Top in Label2)
angezeigt werden, wie lautet die syntax dafür ?}
Label1.caption:='';
Label2.caption:='';
regist.free;
end;
end.
----------------------- Ende ---------------------------------------
> {Die ausgelesenen RegistryWerte von Left und Top
> sollen in den Textfeldern (Left in Label1 und Top in Label2)
> angezeigt werden, wie lautet die syntax dafür ?}
> Label1.caption:='';
> Label2.caption:='';
Soweit ich dich richtig verstanden habe ist das:
Label1.caption:=IntToStr(regist.ReadInteger('Left'));
Label2.caption:=IntToStr(regist.ReadInteger('Top'));
HTH
Felix