Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
14-27224
lds78
2002-08-09 10:59
2002.09.09
ZIP/UNZIP без VCL


8-27116
Di
2002-04-30 20:06
2002.09.09
Как


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


1-27048
alena.svt
2002-08-27 21:13
2002.09.09
Dialogs.pas


14-27237
bde
2002-08-13 10:37
2002.09.09
Напомните плиз какая посл. версия BDE?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский