Форум: "Система";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизРеестр: чтение REG_MULTI_SZ Найти похожие ветки
← →
XAOC (2003-04-21 06:33) [0]Приветствую Вас, Мастера!
Кто-нибудь знает как прочитать из реестра ключи типа REG_MULTI_SZ ? Всмысле заталкать его куда-нибудь типа TStringList.
← →
Cobalt (2003-04-21 11:22) [1]Стандартной функции, насколько я знаю, нет. Видимо, придется ручками буфер проверять...
← →
Ihor Osov'yak (2003-04-21 12:34) [2]
type
TExRegistry = class(TRegistry)
function ReadStrings(const valueName: string):string;
end;
function TExRegistry.ReadStrings(const valueName: string):string;
var
valueType : DWORD;
valueLen : DWORD;
p, buffer : PChar;
begin
result:="";
SetLastError (RegQueryValueEx (CurrentKey, PChar (valueName), Nil,
@valueType, Nil, @valueLen));
if GetLastError = ERROR_SUCCESS then
if valueType = REG_MULTI_SZ then
begin
GetMem (buffer, valueLen);
try
RegQueryValueEx (CurrentKey, PChar (valueName), Nil, Nil, PBYTE (buffer), @valueLen);
p := buffer;
while p^ <> #0 do
begin
if result<>"" then result:=result+#13#10;
result:=result+p;
Inc (p, lstrlen (p) + 1)
end
finally
FreeMem (buffer)
end
end
else
raise ERegistryException.Create ("String list expected")
else
raise Exception.Create (
"Unable read MULTI_SZ value")
end;
← →
XAOC (2003-04-23 13:32) [3]Спасибо!
А я нашел функцию попроще:
function ReadMultirowKey(reg: TRegistry; Key: string): TStrings;
const bufsize = 100;
var
i: integer;
s1: string;
sl: TStringList;
bin: array[1..bufsize] of char;
begin
try
result := nil;
sl := nil;
sl := TStringList.Create;
if not Assigned(reg) then
raise Exception.Create("TRegistry object not assigned.");
FillChar(bin,bufsize,#0);
reg.ReadBinaryData(Key,bin,bufsize);
i := 1;
s1 := "";
while i < bufsize do
begin
if ord(bin[i]) >= 32 then
s1 := s1 + bin[i]
else
begin
if Length(s1) > 0 then
begin
sl.Add(s1);
s1 := "";
end;
end;
inc(i);
end;
result := sl;
except
sl.Free;
raise;
end;
end;
← →
Ihor Osov'yak (2003-04-23 15:42) [4]2 XAOC (23.04.03 13:32)
Молодец. Прочитай своей функцией REG_MULTI_SZ, длиннее чем 100 байт..
← →
XAOC (2003-04-23 16:40) [5]Ihor Osov"yak (23.04.03 15:42)
Ну дык это-ж дело поправимое :)
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c