Вниз
Скачать: CL | DM;

Реестр: чтение 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
14-7723
Карелин Артем
2003-06-17 13:01
2003.07.03
Как изменить настройки BIOS не заходя туда?


6-7580
softmaster
2003-04-28 21:26
2003.07.03
коннект с SMTP-сервером


1-7474
Doc
2003-06-20 13:07
2003.07.03
Вопрос по Стэку и все что с ним связано.


1-7516
ddrx
2003-06-21 19:40
2003.07.03
Как проверить занятость всех ячеек в StringGrid


11-7373
-Alex-
2002-10-26 17:26
2003.07.03
Пытаюсь отследить завершение работы Windows...




   Наверх