Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизКооректна ли моя конструкция? Найти похожие ветки
← →
Егор (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c