Zitat von
Luckie:
Was willst du noch einfacher machen?
Ich möchte das hier
Delphi-Quellcode:
Function Holewert: String;
Var
RINI : TRegistry;
Begin
Result:='';
RINI:=TRegistry.Create;
Try
RINI.RootKey:=HKEY_CURRENT_USER;
If RINI.OpenKeyReadOnly('Irgendwas') Then
Begin
Result:=RINI.ReadString('Irgendwas');
RINI.CloseKey;
End;
Finally
RINI.Free;
End;
End;
für jede einzelne Abfrage der Registry vermeiden. Es kommt hinzu, dass ich häufig zwischen den RootKeys HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE wechseln muss. Es soll daher
mindestens das Anlegen von RINI und das Freigeben nicht jedesmal gemacht werden müssen.
Zitat von
Luckie:
Und bitte poste doch den relevanten Quellcode.
Hier kommt er:
Delphi-Quellcode:
Unit AdvoPlex_Object;
Interface
Uses
Windows,
Classes,
Registry;
Const
{$EXTERNALSYM HKEY_CURRENT_USER}
HKEY_CURRENT_USER = ($80000001);
{$EXTERNALSYM HKEY_LOCAL_MACHINE}
HKEY_LOCAL_MACHINE= ($80000002);
AdvoPfad ='
Software\AdvoSolutions\AdvoPlex';
Type
TAdvoPlex =
Class(TComponent)
Private
RINI : TRegistry;
FUserSU :
String;
Protected
Function GetUser:
String;
Function GetUserSU:
String;
Procedure SetUserSU(Value:
String);
Public
Constructor Create(AOwner:Tcomponent);
Override;
Destructor Destroy;
Override;
Published
Property User :
String Read GetUser;
Property UserSU :
String Read GetUserSU
Write SetUserSU;
End;
Implementation
Constructor TAdvoPlex.Create(AOwner: TComponent);
Begin
Inherited Create(AOwner);
RINI:=TRegistry.Create;
End;
Destructor TAdvoPlex.Destroy;
Begin
RINI.Free;
Inherited Destroy;
End;
Function TAdvoPlex.GetUser;
Function WhoAmI:
String;
Var
Buffer :
Array [0..MAX_PATH]
Of Char;
Size : DWORD;
Begin
Size:=SizeOf(Buffer);
GetUserName(Buffer,Size);
SetString(Result,Buffer,lstrlen(Buffer));
End;
Begin
Result:=WhoAmI;
End;
Function TAdvoPlex.GetUserSU;
Begin
RINI.RootKey:=HKEY_CURRENT_USER;
If RINI.OpenKeyReadOnly(AdvoPfad)
Then
Begin
Result:=RINI.ReadString('
User');
RINI.CloseKey;
End;
End;
Procedure TAdvoPlex.SetUserSU(Value:
string);
Begin
RINI.RootKey:=HKEY_CURRENT_USER;
If RINI.OpenKey(AdvoPfad, True)
Then
Begin
RINI.WriteString('
User', Value);
RINI.CloseKey;
End;
End;
End.
Zitat von
Luckie:
Ich denke, die wenigsten haben Lust erst ein Archiv runterzuladen, es zu entpacken und dann noch einen Editor zum Betrachten deines Quellcodes zu öffnen.
Dann wird es aber vermutlich auch schwieriger, den Fehler zu finden.
Gruß, Alex