Главная страница
    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.46 MB
Время: 0.037 c
1-1090118995
НовиЧок
2004-07-18 06:49
2004.08.01
Поиск текста


1-1090416204
~ShamaN~
2004-07-21 17:23
2004.08.01
Quick Report


4-1087728768
Шалунишка
2004-06-20 14:52
2004.08.01
Центр экрана!!!


6-1085918955
Klev
2004-05-30 16:09
2004.08.01
Отправка письма с вложением средствами Winsock API


1-1090212946
Valeri
2004-07-19 08:55
2004.08.01
Image





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