Главная страница
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.014 c
8-27129
Dy-Ty
2002-05-07 13:38
2002.09.09
Проблема с TCanvas


1-27106
Ig
2002-08-25 15:18
2002.09.09
Нужна такая прога


1-27077
Lexer
2002-08-28 13:42
2002.09.09
Запуск макроса


1-26953
Карлсон
2002-08-28 13:01
2002.09.09
Как сравнить два текста?


1-27007
Seldon
2002-08-29 23:08
2002.09.09
Admin?