Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
4-27281
bytebutcher
2002-07-19 16:56
2002.09.09
Как в DLL узнать PID процесса вызвавшего из этой DLL функцию


14-27202
J_S
2002-08-14 14:04
2002.09.09
SINGLE TONE


14-27212
Сергей Суровцев
2002-08-07 20:24
2002.09.09
---|Ветка была без названия|---


6-27150
sergrrey
2002-06-28 10:33
2002.09.09
ClientSocket посылает строку только со второго раза!


3-26868
Cranium
2002-08-18 14:21
2002.09.09
Помогите с запросом...




   Наверх