Форум: "Система";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизКак прочитать значение REG_MULTI_SZ? Найти похожие ветки
← →
CKOTu (2003-07-02 17:26) [0]я что то парюсь, вроде REG_SZ т.е. ReadString(...) должен читать и MULTI_SZ, но не хочет.
делаю так:
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey("\SYSTEM\CurrentControlSet\Services\{37CF46B1-8512-447A-9437-80E01E7149F4}\Parameters\Tcpip", False)
then Result:= Reg.ReadString("IPAddress");
finally
Reg.CloseKey;
Reg.Free;
end;
tnx
← →
Cobalt (2003-07-02 19:27) [1]И чё ты паришься?
ReadBinaryData
Размер знаешь, память выделяешь... И вперёд!
← →
NoDoubt (2003-07-04 00:43) [2]Здрасти! :) Многоуважаемый Cobalt а если размер не знаешь? Я предлагаю другой способ WinApi функцию RegEnumValue! В Delphi
есть справка Windows SDK там все написано!
← →
Cobalt (2003-07-04 13:45) [3]Известен максимальный размер параметра.
Да, согласен - в стандартном компоненте нет всей функциональности, только самая простая - а что вы таки хотели? Всё и сразу? :)
Но, зато у вас есть ручки.
Ну, на крайний случай, можно на Торри поискать - там такого добра навалом.
← →
CKOTu (2003-07-08 12:07) [4]Спасибо, мы пойдем дригим путем:
function GetAdaptersInfo(pAdapterInfo: PIP_ADAPTER_INFO; pOutBufLen: PULONG): DWORD; stdcall; external "Iphlpapi.dll" name "GetAdaptersInfo";
← →
CKOTu (2003-07-08 12:17) [5]сложно было написать что то типа:
function RegGetValue(RootKey: HKEY; Name: String; ValType: Cardinal; var PVal: Pointer; var ValSize: Cardinal): boolean;
var
SubKey: String;
n: integer;
MyValType: DWORD;
hTemp: HKEY;
Buf: Pointer;
BufSize: Cardinal;
PKey: PChar;
begin
Result := False;
n := LastPos("\", Name);
if n > 0 then
begin
SubKey := Copy(Name, 1, n - 1);
if RegOpenKeyEx(RootKey, PChar(SubKey), 0, KEY_READ, hTemp) = ERROR_SUCCESS then
begin
SubKey := Copy(Name, n + 1, Length(Name) - n);
if SubKey = "" then
PKey := nil
else
PKey := PChar(SubKey);
if RegQueryValueEx(hTemp, PKey, nil, @MyValType, nil, @BufSize) = ERROR_SUCCESS then
begin
GetMem(Buf, BufSize);
if RegQueryValueEx(hTemp, PKey, nil, @MyValType, Buf, @BufSize) = ERROR_SUCCESS then
begin
if ValType = MyValType then
begin
PVal := Buf;
ValSize := BufSize;
Result := True;
end else
begin
FreeMem(Buf);
end;
end else
begin
FreeMem(Buf);
end;
end;
RegCloseKey(hTemp);
end;
end;
end;
function RegGetMultiString(RootKey: HKEY; Name: String; Var Value: String): boolean;
var
Buf: Pointer;
BufSize: Cardinal;
begin
Result := False;
Value := "";
if RegGetValue(RootKey, Name, REG_MULTI_SZ, Buf, BufSize) then
begin
Dec(BufSize);
SetLength(Value, BufSize);
if BufSize > 0 then
Move(Buf^, Value[1], BufSize);
( Buf) сложно было написать что то типа:
function RegGetValue(RootKey: HKEY; Name: String; ValType: Cardinal; var PVal: Pointer; var ValSize: Cardinal): boolean;
var
SubKey: String;
n: integer;
MyValType: DWORD;
hTemp: HKEY;
Buf: Pointer;
BufSize: Cardinal;
PKey: PChar;
begin
Result := False;
n := LastPos("\", Name);
if n > 0 then
begin
SubKey := Copy(Name, 1, n - 1);
if RegOpenKeyEx(RootKey, PChar(SubKey), 0, KEY_READ, hTemp) = ERROR_SUCCESS then
begin
SubKey := Copy(Name, n + 1, Length(Name) - n);
if SubKey = "" then
PKey := nil
else
PKey := PChar(SubKey);
if RegQueryValueEx(hTemp, PKey, nil, @MyValType, nil, @BufSize) = ERROR_SUCCESS then
begin
GetMem(Buf, BufSize);
if RegQueryValueEx(hTemp, PKey, nil, @MyValType, Buf, @BufSize) = ERROR_SUCCESS then
begin
if ValType = MyValType then
begin
PVal := Buf;
ValSize := BufSize;
Result := True;
end else
begin
FreeMem(Buf);
end;
end else
begin
FreeMem(Buf);
end;
end;
RegCloseKey(hTemp);
end;
end;
end;
function RegGetMultiString(RootKey: HKEY; Name: String; Var Value: String): boolean;
var
Buf: Pointer;
BufSize: Cardinal;
begin
Result := False;
Value := "";
if RegGetValue(RootKey, Name, REG_MULTI_SZ, Buf, BufSize) then
begin
Dec(BufSize);
SetLength(Value, BufSize);
if BufSize > 0 then
Move(Buf^, Value[1], BufSize);
FreeMem(Buf);
Result := True;
end;
end;
чем флейм разводить?
← →
Cobalt (2003-07-08 16:22) [6]> сложно было написать что то типа:
А зачем - ты и так это уже понял. ч.т.д.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c