在單元中加入Registry
自定義函式如下:
function getREG_MULTI_SZ(rstr,kStr:string):string;
var
myreg: TRegistry;
STemp: string;
Mtype,ValueSize:Dword;
ArrChar:array [0..200] of char;
i: Integer;
c: char;
begin
Result:='';
myreg := TRegistry.Create; try
Mtype:=REG_MULTI_SZ;
myreg.RootKey:= HKEY_LOCAL_MACHINE;//確定打開注冊表的主鍵,若要打開其它主鍵,也可以自行定義在如kstr之類,也可更改其它主鍵
if myreg.OpenKey(rstr,false) then
begin
ValueSize:=sizeof(ArrChar);
RegQueryValueEx(myreg.CurrentKey, PChar(kstr), nil, @Mtype, @ArrChar,@ValueSize);
for i:=0 to 200 do
begin
c := ArrChar[i];
while c = #0 do
begin
while ArrChar[i+1]<>#0 do
begin
ArrChar[i]:=' ';
break;
end;
break;
end;
end;
sTemp := ArrChar;
Result:=Trim(STemp);
end;
finally
myreg.CloseKey;
myreg.Free;
end;
end;
呼叫:例如:getREG_MULTI_SZ('SYSTEM\CurrentControlSet\services\Tcpip\Parameters',‘DhcpNameServer’)
uj5u.com熱心網友回復:
uses
Registry;
type
TMultiString = array of string;
TMultiRegistry = class(TRegistry)
public
function ReadMultiString(const name: string): TMultiString;
end;
function TMultiRegistry.ReadMultiString(const name: string): TMultiString;
var
RegData: TRegDataType;
Info: TRegDataInfo;
buffer: pchar;
ptr: pchar;
i: Integer;
begin
if GetDataInfo(Name, Info) then
begin
GetMem(buffer, info.DataSize);
ReadBinaryData(name, buffer^, info.DataSize);
ptr := buffer;
i := 0;
while (ptr^ <> #0) do
begin
SetLength(Result, i + 1);
Result[i] := ptr;
Inc(i);
inc(ptr, StrLen(ptr) + 1);
end;
FreeMem(buffer);
end;
end;
繼承TRegistry,增加函式ReadMultiString
呼叫如下
var
reg: TMultiRegistry;
v: TMultiString;
i: Integer;
begin
reg := TMultiRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if not reg.OpenKey('SYSTEM\CurrentControlSet\services\Tcpip\Parameters', False) then
Exit;
v := reg.ReadMultiString('DhcpNameServer');
finally
reg.Free;
end;
for i := 0 to Length(v) - 1 do
begin
ShowMessage(v[i]);
end;
//HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ALG
end;
uj5u.com熱心網友回復:
RegQueryValueExuj5u.com熱心網友回復:

這個真可以的喲,如果是你 需要的,請將我 QQ,我直接傳給你啊


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78863.html
