Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try .. finally внутри try .. except


Страницы:   1 2

Nucer ©   (2012-01-24 16:22:00) 

Код:
procedure MyProc;
begin
 try
   ...
   Obj := TObj.Create;
   try
     ...
     Value := ...;
     ...
   finally
     Obj.Free;
   end;
   if Value then ...;
   ...
 except
   ...
 end;
end;


Delphi 7 предупреждает об ошибке:
[Warning] Unit1.pas(438): Variable 'Value' might not have been initialized

Ошибка среды? Или я что-то делаю не так?


Ega23   (2012-01-24 16:46:00) [21]


> Вот реальный пример (можно скопировать в IDE и увидеть предупреждение):


Буратино дали 3 яблока. 2 яблока он съел. Сколько яблок осталось у Буратино?


Nucer   (2012-01-24 16:42:00) [22]

Вот реальный пример (можно скопировать в IDE и увидеть предупреждение):
procedure Test;
var
 Obj: TStringList;
 Value: Integer;
begin
 try
   Obj := TStringList.Create;
   try
     if Random(10) = 0 then raise Exception.Create('Error!');
     Value := Obj.Count;
   finally
     Obj.Free;
   end;
   if Value > 0 then Sleep(1000);
 except
   MessageBox(0, 'Error!', 'Error!', 0);
 end;
end;


Nucer   (2012-01-24 16:38:00) [23]

Прошу прощения за неточность(по примеру кода этого не видно), но переменная локальная.


sniknik   (2012-01-24 16:35:00) [24]

глобальная переменная... откуда знать что после этой процедуры другая ее не использует?


Nucer   (2012-01-24 16:30:00) [25]

Но ведь если значение не будет присвоено, то и до проверки значения дело не дойдет?


MBo   (2012-01-24 16:27:00) [26]

Это не ошибка, а предупреждение, ведь Value действительно не всегда  будет присвоено значение.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо