Текущий архив: 2007.02.11;
Скачать: CL | DM;
Вниздва TiniFile.Create = Access violation Найти похожие ветки
← →
Garacio © (2007-01-24 15:34) [0]Почему программа (в одной форме) не даёт два раза запустить:
begin
Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+"Save.ini");
...
Ini.Free;
end;
Схема такая:
Create формы -> чтение из ini в Edit -> onChange Edit -> поиск файлов -> если найден, то сверяется со значением в ini
Т.о. я пишу данный код два раза. Программа не работает (Access violation), если только я не ввожу значение Edit вручную, или сам не проверяю названия полученных файлов, т.е. Делал для Edit - Save.ini, а для сверки Save2.ini, результат тот-же. Почему так происходит?
← →
stone © (2007-01-24 15:36) [1]
> ...
ИМХО, ошибка где-то здесь.
← →
Сергей М. © (2007-01-24 15:40) [2]
> Программа не работает (Access violation)
Что, прямо так и говорит, мол, "не работаю (Access violation)" ?
Или все-таки сподобишься привести сюда (или самому проанализировать, что гораздо лучше) дословный текст сообщения об исключении, который несет весьма важную информацию для поиска ошибок ?
← →
Garacio © (2007-01-24 15:41) [3]> ...
ИМХО, ошибка где-то здесь.
Нет - это точно! Во-первых, иначе почему действия выполняются по одиночке (при отсутствии автоматического выполнения другого)? Во-вторых, я пробовал зазные > ...
← →
Джо © (2007-01-24 15:42) [4]> [3] Garacio © (24.01.07 15:41)
> > ...
>
> ИМХО, ошибка где-то здесь.
>
> Нет - это точно!
Это — предмет веры и обсуждению не подлежит. Если ты веришь в это — будь здоров и всяческих успехов! :)
← →
Garacio © (2007-01-24 15:44) [5]Проект Project1.exe вызвал исключение класса ЕAccessViolation с сообщением "Access violation at address 00000000. Read of address 00000000". Процесс остановлен.
← →
Сергей М. © (2007-01-24 15:48) [6]
> Garacio © (24.01.07 15:44) [5]
> at address 00000000
Ну хорошо, предположим, что вделенное жирным соответствует действительности.
Что показывает пошаговая трассировка ? Какая конкретно строчка твоего кода возбуждает данное исключение ?
← →
Джо © (2007-01-24 15:53) [7]Для начала хотя бы сделай Ini локальной переменной, уже уменьшишь кол-во потенциальных ошибок.
← →
КиТаЯц © (2007-01-24 16:30) [8]
> begin
> Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+"Save.
> ini");
> ...
> Ini.Free;
> end;
Трудно угадать, что скрывается за тремя точками, но все-же попытаюсь посоветовать...
Сделай так:
begin
Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+"Save.ini");
try
...
finally
Ini.Free;
end;
end;
← →
Плохиш © (2007-01-24 16:33) [9]О опять Garacio, пойду лучше по порносайтам полазию. Ему всё-равно что-либо объяснять бестолку, т.к. объяснять надо начиная с азов из книжки "Делфи для чайников за 21 секунду"...
← →
click (2007-01-24 16:43) [10]
> Плохиш © (24.01.07 16:33) [9]
> О опять Garacio, пойду лучше по порносайтам полазию.
Руки на одеяло!!! ;)
> Garacio ©
большинство здесь обитающих, как ты наверное убедился сам неоднократно, имеют родовую травму... и, что удивительно, у всех она одинаковая, а именно повреждение телепатора. Так что либо тебе прийдется привести тот злонесущий участок кода сюда, либо пытаться разобраться самому. Второе кстати куда более позитивно повлияет на твой IQ. Успехов.
← →
Garacio © (2007-01-24 17:36) [11]Что показывает пошаговая трассировка ?
Ошибка возникает на втором Ini.Free;
← →
ANB © (2007-01-24 18:27) [12]
> Ошибка возникает на втором Ini.Free;
значит к этому времени его уже освободили. имхо : твой кусок вызывается 2 раза, причем второй раз в .... А переменная Ini у тебя объявлена глобально. В результате, у тебя твой код работает второй раз с самого начала, трет старый указатель, потом освобождает новый, но при этом значение старого ты уже потерял. Есно Ini.Free второй раз дает ошибку.
См. пост №7. Ну и №8 тоже очень полезно.
← →
Anatoly Podgoretsky © (2007-01-24 20:00) [13]
> ИМХО, ошибка где-то здесь.
Вообще то выше.
← →
Loginov Dmitry © (2007-01-24 20:32) [14]Это ж баян! Глобальный объект Ini юзается в данной процедуре, но он еще раз создается при каком-нить OnChange, уничтожается там, затем и в данной процедуре.
Страницы: 1 вся ветка
Текущий архив: 2007.02.11;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.039 c