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

Вниз

Кооректна ли моя конструкция?   Найти похожие ветки 

 
Егор   (2002-08-27 15:33) [0]

То есть: можно ли в одной процедуре работать с несколькими корневыми ключами RootKey так, как это делаю я?

procedure ReadParams;
var
Reg: Tregistry;
begin
Reg:=TRegistry.Create;
try
{$ifdef VER130}
Access := KEY_READ;
{$endif}

Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey("\SOFTWARE\Microsoft\Windows", False) then
begin
.......
end;
Reg.CloseKey;

Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Reg.OpenKey("\Software\Microsoft\Windows", False) then
begin
.......
end;
Reg.CloseKey;

except
Reg.CloseKey;
Reg.Free;
end;
end;


 
Внук ©   (2002-08-27 15:35) [1]

На здоровье, только Reg.Free надо вынести из except еще ниже


 
Skier ©   (2002-08-27 15:36) [2]

>Егор
Да.
Только Reg надо бы освободить !
А в твоём код он освобождается только при exception.


 
Егор   (2002-08-27 15:48) [3]

Так?

procedure ReadParams;
var
Reg: Tregistry;
begin
Reg:=TRegistry.Create;
try
{$ifdef VER130}
Access := KEY_READ;
{$endif}

Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey("\SOFTWARE\Microsoft\Windows", False) then
begin
.......
end;
Reg.CloseKey;
Reg.Free;

Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Reg.OpenKey("\Software\Microsoft\Windows", False) then
begin
.......
end;
Reg.CloseKey;
Reg.Free;

except
Reg.CloseKey;
Reg.Free;
end;
end;


 
Skier ©   (2002-08-27 15:51) [4]

>Егор
Нет !


Вот так :


procedure ReadParams;
var
Reg: Tregistry;
begin
try
Reg:=TRegistry.Create;
try
{$ifdef VER130}
Access := KEY_READ;
{$endif}

Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey("\SOFTWARE\Microsoft\Windows", False) then
begin
.......
end;
Reg.CloseKey;

Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Reg.OpenKey("\Software\Microsoft\Windows", False) then
begin
.......
end;
Reg.CloseKey;

finally
FreeAndNil(Reg);
end; //try

except
if Reg <> nil then begin
Reg.CloseKey;
Reg.Free;
end; //if
end; //try
end;


 
Егор   (2002-08-27 16:06) [5]

Спасибо.


 
cypher ©   (2002-08-27 16:18) [6]

IMXO нада except на finally поменять

A:=Object.Create();
try
A.bla-bla-bla := hz-che;
finally
A.Free;
end;


 
Егор   (2002-08-27 16:26) [7]

Если программа читает строковое значение, а в реестре записано оно как бинарное (разное бывает) тогда появляеться нехорошее сообщение. Используя except вместо finally такое сообщение не появляеться.



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
3-26857
Макс 2
2002-08-19 11:41
2002.09.09
Перевод символьной строки в string


4-27265
MishGan
2002-07-17 14:36
2002.09.09
Unicode: строка Little Endian <-> Big Endian


14-27160
Карлсон
2002-08-11 01:22
2002.09.09
Про уязвимости в окнах.


1-26970
Tornado
2002-08-27 14:51
2002.09.09
Пдскажите плиз


3-26899
Art1
2002-08-20 11:04
2002.09.09
Как закрыть парадоксовские базы паролем?