![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при чтении двочных данных из реестра [D6, WinXP]
пионер © (2004-10-11 20:15:00)Подскажите, почему тут возникает EAccessViolation ?
const
RegBorland:String =
'\Software\Borland\Delphi\6.0';
var
Reg:TRegistry;
Buf:array of Byte;
BufSize:Integer;
begin
try
Reg := TRegistry.Create;
Reg.RootKey :=HKEY_CURRENT_USER;
Reg.OpenKeyReadOnly(RegBorland);
BufSize := Reg.GetDataSize('LM');
if BufSize <> -1 then
SetLength(Buf,BufSize)
else
Exit;
Reg.ReadBinaryData('LM',Buf,BufSize);
finally
Reg.CloseKey;
Reg.Free;
end;
end;
begin...end (2004-10-11 20:53:00) [1]И ещё:
1. Reg := TRegistry.Create поставь перед try
2. Не забудь освободить память из-под Buf
Удачи!
пионер (2004-10-11 20:49:00) [2]Точно! Спасибо! :)
begin...end (2004-10-11 20:41:00) [3]А так:
Reg.ReadBinaryData('LM', Buf[0], BufSize);
?
пионер (2004-10-11 20:36:00) [4]LM - двоичный и в Delphi 6 он есть. Я его привел в качестве примера. Ошибка возникает при чтении любого двочного параметра. почему?
begin...end (2004-10-11 20:31:00) [5]И вообще - что это ты там собрался сделать? Очередной кулхацкер?
Для Delphi 7 я не вижу параметра LM в реестре, есть LMKEY и LMLIC, но это строковые параметры, так что и читать их надо соответственно.
Из описания метода ReadBinaryData:
If the Registry entry contains a known type (such as a string), ReadBinaryData raises an exception.
пионер (2004-10-11 20:29:00) [6]begin...end © (11.10.04 20:20) [1]
Где "тут"?
Reg.ReadBinaryData('LM',Buf,BufSize);
По-моему все правильно...
begin...end (2004-10-11 20:20:00) [7]Где "тут"?