Форум: "Основная";
Текущий архив: 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