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

Вниз

два 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.037 c
6-1157547727
провидец
2006-09-06 17:02
2007.02.11
TWebBrowser


2-1169640790
Light-blr
2007-01-24 15:13
2007.02.11
Можно ли из одного юнита взять константу другого?


15-1169091964
Одя
2007-01-18 06:46
2007.02.11
Существуют ли программы перевода сишных макросов в Паскаль?


3-1164098174
RomanH
2006-11-21 11:36
2007.02.11
Замысловатый SQL-запрос


2-1168613812
AlexanderMS
2007-01-12 17:56
2007.02.11
Включение в исполняемый файл других файлов.





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