(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
Delphi 11 Alexandria
|
28. Jun 2002, 21:28
Moin ToppDog,
hier hab' ich mal ein kleines Beispiel wie's gehen könnte.
Bislang nur mit gültigen Werten getestet, aber eigentlich sollten auch fehlerhafte Werte nur für entsprechende Rückgabewerte der Funktionen sorgen.
Code:
function WriteStringToRegAPI(const p_sSubKey : string;const p_sValueName : string;const p_sValue : string) : integer;
var
hResult : HKEY;
begin
// Es ginge auch RegOpenKeyEx, so wird ein nicht existenter Key aber angelegt.
// Existiert der SubKey, wird er geöffnet
Result := RegCreateKeyEx(HKEY_CURRENT_USER,PChar(p_sSubKey),0,nil,0,KEY_ALL_ACCESS,nil,hResult,nil);
if Result <> ERROR_SUCCESS then
begin
exit;
end;
try
Result := RegSetValueEx(hResult,PChar(p_sValueName),0,REG_SZ,@p_sValue[1],Length(p_sValue)+1);
finally
RegCloseKey(hResult);
end;
end;
function ReadStringFromRegAPI(const p_sSubKey : string; const p_sValueName : string;var p_sResult : string) : integer;
var
hResult : HKEY;
dwMaxValueLen : DWORD;
szResult : PChar;
begin
Result := RegOpenKeyEx(HKEY_CURRENT_USER,PChar(p_sSubKey),0,KEY_ALL_ACCESS,hResult);
if Result <> ERROR_SUCCESS then
begin
exit;
end;
try
Result := RegQueryInfoKey(hResult,nil,nil,nil,nil,nil,nil,nil,nil,@dwMaxValueLen,nil,nil);
if Result <> ERROR_SUCCESS then
begin
exit;
end;
inc(dwMaxValueLen);
szResult := StrAlloc(dwMaxValueLen);
try
Result := RegQueryValueEx(hResult,PChar(p_sValueName),nil,nil,PByte(szResult),@dwMaxValueLen);
if Result <> ERROR_SUCCESS then
begin
exit;
end;
p_sResult := trim(szResult);
finally
StrDispose(szResult);
end;
finally
RegCloseKey(hResult);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
iResult : integer;
sResult : string;
begin
iResult := WriteStringToRegAPI('Software\CSE\TEST','TESTWERTNAME','TESTWERT');
if iResult <> ERROR_SUCCESS then
begin
ShowMessage(SysErrorMessage(iResult));
end;
iResult := ReadStringFromRegAPI('Software\CSE\TEST','TESTWERTNAME',sResult);
if iResult <> ERROR_SUCCESS then
begin
ShowMessage(SysErrorMessage(iResult));
end
else
begin
ShowMessage(sResult);
end;
end;
Kommst Du damit klar?
@Mathias Simmack
Tut ist noch in Arbeit
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
|