Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

получит из ключа реестра, значения определённы типов   Найти похожие ветки 

 
ctranik   (2005-06-11 22:37) [0]

Здравтствуйте

Подскажите пожалуйста как с помощью API-функций получит из ключей реестра значения следующих типов :
- REG_DWORD
- REG_BINARY

а то у меня ничего неполучается

Заранее благодарен


 
Ученик   (2005-06-11 22:53) [1]

Пример в Delphi?\Source\Rtl\Common\Registry.pas


 
Anatoly Podgoretsky ©   (2005-06-11 23:03) [2]

И как у тебя не получается?


 
ctranik   (2005-06-12 11:51) [3]


> Anatoly Podgoretsky

привет

использую API -функцию RegEnumValue (
                        HKEY hKey,
                        DWORD dwIndex,
                        LPTSTR lpValueName,
                        LPDWORD lpcbValueName,
                        LPDWORD lpReserved,
                        LPDWORD lpType,
                        LPBYTE lpData,
                        LPDWORD lpcbData) ,
там есть параметр " LPBYTE lpData ", в который загружаются данные, так вот если тип данных  " REG_SZ" то всё нормально пишется в мой список (TstringList), а вот если тип данных "REG_DWORD " или " REG_BINARY " то в мой список записывается только имя параметра а сами данные нет.

Что я должен делать ?


 
Просто Джо ©   (2005-06-12 15:14) [4]

Разреши поинтересоваться: ты что в качестве значения для параметра lpValueName так прямо и передаешь экземпляр TStringList? Весело, однако. Уточни, пожалуйста, а лучше приведи кусок своего кода, а то будет совсем грустно.


 
ctranik   (2005-06-13 20:43) [5]

Просто Джо, привет
в параметр lpValueName ,я непередаю никакой экземпляр TStringList
вот функция котороя отвечает за поиск типа значений и самих данных в открытом ключе.
Возникнут вопросы отвечу , только помоги пожалуйста понять как прочесть Двоичные данные, со строковыми данными функция справляется без проблем.


procedure FindValue(CK:HKey;Path,GlobalTargetkey,CurrentTargetKey:string;Select:boolean;var OutList:TstringList);
var
valuelist:tstringlist;
SubBuffer:array[0..1001] of char;
Data: array [0..1001] of byte;
subbufersize:cardinal;
subindex,datasize,datatype:integer;
s:string;

begin

valuelist:=tstringlist.Create;
subindex:=0 ; subbufersize:=1001; datasize:=1001;

while RegEnumValue(ck,subindex,subbuffer,subbufersize,nil,@datatype,@data,@datasize)<> ERROR_NO_MORE_ITEMS do begin
s:=strpas(subbuffer);
if s="" then s:="&#207;&#238; &#243;&#236;&#238;&#235;&#247;&#224;&#237;&#232;&#254;";

case Select of
 true :   valuelist.Add(s+" : "+ PChar(@data));

 false:  begin
          if pos(CurrentTargetKey,s)>0 then valuelist.Add(s+" : "+PChar(@data))
          else
           if pos(CurrentTargetKey,PChar(@data))>0 then valuelist.Add(s+" : "+PChar(@data));
         end;  //false
end;//case

inc(subindex);
subbufersize:=1001; datasize:=1001;
end; //while

if (select=true)and(valuelist.Count>0) then begin
  outlist.Add("[");
  outlist.AddStrings(valuelist);
  outlist.Add("]");
end//if
else
if (select=false)and(valuelist.Count>0) then begin
  outlist.Add(GlobalTargetkey+" -- "+path);
  outlist.Add("[");
  outlist.AddStrings(valuelist);
  outlist.Add("]");
end;
valuelist.Free;
end;

> Просто Джо


 
Просто Джо ©   (2005-06-14 01:00) [6]

Посмотри исходники метода TRegistry.GetValueNames в модуле Registry.pas - там все просто до безобразия.



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.036 c
1-1122284113
sarcin
2005-07-25 13:35
2005.08.14
Resize функция для IntraWeb


14-1121456065
Магнум
2005-07-15 23:34
2005.08.14
На что потратить свои WebMoney?


14-1122024136
asdqwer
2005-07-22 13:22
2005.08.14
SMS Email Gateway


1-1122419348
Mangoost
2005-07-27 03:09
2005.08.14
выбор на listbox-e


9-1114359194
Yegorchic
2005-04-24 20:13
2005.08.14
Как сделать 2D вид в GLScene?