Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при чтении двочных данных из реестра [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]

Где "тут"?


Наверх

Титульная страница Поиск, карта сайта Написать письмо