Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.03;
Скачать: 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 вся ветка

Текущий архив: 2003.07.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
4-7766
sunwheel1
2003-04-28 12:38
2003.07.03
Помогите с WaitForSingleObject


3-7357
inspirion
2003-06-10 22:19
2003.07.03
Перехват данных


1-7426
johny
2003-06-23 11:47
2003.07.03
Подскажите как пользоваться TreeView


1-7544
Роман Ш.
2003-06-22 12:44
2003.07.03
Передача данных в Excel с заданием формата отображения


11-7374
Gandalf
2002-10-24 18:39
2003.07.03
Теперь у нас есть Юникод?!