Вниз
Скачать: 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.009 c
14-27174
arbiter
2002-08-13 22:30
2002.09.09
Что лучше для FTP


3-26920
Пономарев Андрей
2002-08-19 09:25
2002.09.09
UNC и TIBDataBase


7-27242
Alik
2002-06-29 19:37
2002.09.09
Событие OnMouseOver


1-27067
Korona
2002-08-27 21:13
2002.09.09
Как разместить Item справа на MainMenu?


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




   Наверх