![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с функцией ! [D6, Win95/98, Win2k, WinXP]
alexis © (2003-10-26 12:05:00)
Мне требуется прочесть строку из определенного ключа реестра.В инете я узнал о ф-ции RegQueryValue.
Там было написано следующее:
RegQueryValue(Key: HKey; SubKey: PChar; Value: PChar; var cb: Longint): Longint;
Возвращает текстовую строку, связанную с ключом Key\SubKey.
Value - буфер для строки;cb- размер, на входе - размер буфера, на выходе - длина возвращаемой строки. Возврат - код ошибки.
Именно с буфером для строки я не могу разобраться.Я написал такой код:
procedure TForm1.FormCreate(Sender: TObject);
var
imia:array[0..40] of char;
s:longint;
MyKey:HKey;
begin
RegQueryValue(HKEY_local_machine,"Software\Microsoft\Windows\CurrentVersion\productid",imia,s);
showmessage("s="+inttostr(s));
showmessage(StrPas(imia));
end;
Но при запуске получается какая-то хрень: вначале выдается номер 420001(причем при разных ключах число s не меняется), потом вместо строкового значения что-то вроде 3@ (????).Я попробовал объявить буффер как массив строк (array[0..40] of string), но компилятор выдает: Type mismatch-Array and PChar.
Может функцию StrPas неправильно использую? Как мне получить нормальное строковое значение?
Заранее благодарен.
Игорь Шевченко (2003-10-27 13:05:00) [1]
procedure TForm1.FormCreate(Sender: TObject);
var
imia:array[0..40] of char;
s:longint;
MyKey:HKey;
begin
s := SizeOf(imia);
RegQueryValue(HKEY_local_machine,"Software\Microsoft\Windows\CurrentVersion\productid",imia,s);
showmessage("s="+inttostr(s));
showmessage(StrPas(imia));
end;
alexis (2003-10-27 12:26:00) [2]
А подробнее об аргументах функции мог бы написать? Что за
nil, @D1, @Folder[1], @D2 - и куда записывается строковое значение?
Rouse_ (2003-10-26 12:14:00) [3]
if RegQueryValueEx (Key, FoldName, nil, @D1, @Folder[1], @D2) = Error_Success
Желаю успехов