Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

почуему в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
14-1089882872
peypivo
2004-07-15 13:14
2004.08.01
просмотр фильмов


1-1089978524
faost
2004-07-16 15:48
2004.08.01
Есть ли компоненты, реализующие раскрывающееся меню в WinXP?


3-1089110896
alex-ran
2004-07-06 14:48
2004.08.01
Список пользователей БДЕ


14-1089449926
Mell
2004-07-10 12:58
2004.08.01
Красивый toolbar


6-1086005410
Ruwer, inc.
2004-05-31 16:10
2004.08.01
Как в indy HTTPServer вовремя обработать запрос и послать ответ.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский