Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизОшибка при чтении двочных данных из реестра Найти похожие ветки
← →
пионер (2004-10-11 20:15) [0]Подскажите, почему тут возникает 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:20) [1]Где "тут"?
← →
пионер (2004-10-11 20:29) [2]begin...end © (11.10.04 20:20) [1]
Где "тут"?
Reg.ReadBinaryData("LM",Buf,BufSize);
По-моему все правильно...
← →
begin...end © (2004-10-11 20:31) [3]И вообще - что это ты там собрался сделать? Очередной кулхацкер?
Для 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:36) [4]LM - двоичный и в Delphi 6 он есть. Я его привел в качестве примера. Ошибка возникает при чтении любого двочного параметра. почему?
← →
begin...end © (2004-10-11 20:41) [5]А так:
Reg.ReadBinaryData("LM", Buf[0], BufSize);
?
← →
пионер (2004-10-11 20:49) [6]Точно! Спасибо! :)
← →
begin...end © (2004-10-11 20:53) [7]И ещё:
1. Reg := TRegistry.Create поставь перед try
2. Не забудь освободить память из-под Buf
Удачи!
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.035 c