Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

почуему в try...finally всегда срабатывает   Найти похожие ветки 

 
han   (2004-07-16 12:06) [0]

Есть код
 if not DeleteFile(FsIniFile) then
   raise Exception.Create(Format("Can not delete the file "%s"", [FsIniFile]));

 with TIniFile.Create(FsIniFile) do
   try
     FDBList.IniFileName := FsIniFile;
     FDBList.Section :="DB List";
     FDBLIST.StoreDst := sdINI;
     FDBList.Store;
   finally
     Free;
   end;

В условии if not DeleteFile(FsIniFile) срабатывает генерация исключительной ситуации, т. .е выполнение не должно дойти до блока try....
Но почему-то finally в этом блоке всеравно срабатывает. Объясните мне плиз почему?


 
Суслик ©   (2004-07-16 12:11) [1]

1 потому, что исключение не срабатывает
2 или ты не весь код привел


 
Anatoly Podgoretsky ©   (2004-07-16 12:13) [2]

Значит не срабатывает if not DeleteFile(FsIniFile) или ты не все говоришь


 
Digitman ©   (2004-07-16 12:24) [3]

что-то я не понял, для чего здесь with-конструкция ? где в ее теле идет обращение к экз-ру созданного объекта класса TIniFile ? кроме Free ?


 
Инопланетянин   (2004-07-16 12:40) [4]


> Но почему-то finally в этом блоке всеравно срабатывает


не срабатывает, смотри внимательнее.
Если ты пришел к такомы выводу, шагая отладчиком, то не верь глазам своми.
Поставь брекпоинт на Free и убедись, что там не остановишься


 
han   (2004-07-16 12:49) [5]

что не все? это весь код процедуры

procedure TAppSettings.StoreToINI;
begin
 if not DeleteFile(FsIniFile) then
   raise Exception.Create(Format("Can not delete the file "%s"", [FsIniFile]));

 with TIniFile.Create(FsIniFile) do
   try
     FDBList.IniFileName := FsIniFile;
     FDBList.Section :="DB List";
     FDBLIST.StoreDst := sdINI;
     FDBList.Store;
   finally
     Free;
   end;
end;


 
Digitman ©   (2004-07-16 12:53) [6]


> han   (16.07.04 12:49) [5]


ответь на вопросы :

1. ты ставил брейкпойнт Free ? "Ловил" его ?
2. Где в коде между try и finally ты обращаешься к объекту класса TIniFile ?


 
han   (2004-07-16 12:59) [7]

тоже правильно... но все равно. Какая разница обращаюсь я к нему или нет?


 
Суслик ©   (2004-07-16 13:03) [8]


> han   (16.07.04 12:59) [7]

вопрос 1 из сообщения 6 чем не угодил?
Может ответишь.


 
han   (2004-07-16 13:05) [9]

от блин, странности... Остановится на Free остановился, но его он не отрабатывает... типа все правильно. Надо искать тогда причину в другом. Спасибо за объяснение.


 
Digitman ©   (2004-07-16 13:26) [10]


> Остановится на Free


раз остановился, значит строчка

raise Exception.Create(Format("Can not delete the file "%s"", [FsIniFile]));

не выполнена



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.103 c
4-1086624324
killer
2004-06-07 20:05
2004.08.01
Браузер установленный по умолчанию


4-1087542911
alexdbases
2004-06-18 11:15
2004.08.01
Появление нового процесса в системе.


6-1086197510
Игорь
2004-06-02 21:31
2004.08.01
Компонеты FastNet


14-1089294654
Nick-From
2004-07-08 17:50
2004.08.01
Косяки в Excel


4-1087395044
Erik1
2004-06-16 18:10
2004.08.01
Теория загрузки упакованого файла?