Acces Violation!

Тема в разделе "Delphi - Система", создана пользователем 4ert, 14 апр 2006.

Статус темы:
Закрыта.
  1. 4ert

    4ert Гость

    Люди, помогите плиз!!!!!!!!!.......
    Вопрос такой,.... Да и не вопрос это вовсе........
    Короче, ситуация такова. Решил я написать на delphi козла(игра карточная,если кто не знает),честно говоря я плоховато знаю Delphi,но всё же взялся.........
    И вот что обнаружилось,как бы выразиться..... короче говоря при выполнении программы
    некоторые функции(точнее почти все) изредка просто игнорируются, скажем у меня есть функция,
    регистрации вышедших карт,и удаления их из массива игрока(чтобы он не кидал их дважды),где-то в 17 раз из двадцати всё ништяк!!!1,но в оставшиеся три бот может воспользоваться выбывшей картой дважды, и даже трижды!!!!, в коде я уверен почти на сто(нехочу приводить исходник,просто я сомневаюсь, что у кого-то возникнет желание разбираться в 2332 строках кода...),и так происходит почти со всеми 20 вспомогательными функциями в моей программе.Улучшить ситуацию можно,вызвав в нужной ситуации нужную функцию дважды,или трижды,количество глюков стало значительно меньше(но все равно имелись...)...короче говоря, я продолжил писать, решил разобраться с этим позже. И вот сейчас я в принципе закончил всю думающую часть программы, и что я обнаружил?!, да то,что даже один кон не может закончиться без Acces Violation!,причем ошибка возникает не в одном месте(тогда бы я заметил в каком точнее при каком "раскладе",и сто процентов выявил бы браковую функцию),но ошибка(EAccesViolation(216)) теперь может вылетить когда угодно и где угодно(даже в самом начале).Я вообще плохо ознакомлен с работой памяти,но я понимаю,что эта ошибка возникает при обращении программы к неинициализированному участку памяти(из helpa),тогда возникает вполне законный вопрос начинающего ламера, как её инициализировать?............Возможно все дело в такой организации игры: у меня ..уева туча глобальных переменных и около двадцати функций, которые постоянно изменяют значения этих глобальных переменных, может из-за этого?...Ещё у меня вся логика бота построена на операторах for to do, и if then.Наконец у меня куча вызовов функций из самих функций,т.е. например главная функция программы(управляющая), запускает скажем функцию захода(первого хода), а та в свою очередь анализируя имеющиеся у игрока карты, запускает функцию поиска минмального козыря(если видит что остались одни козыря), я вообще молчу о вызвах таких вспомогательных функций как поиск подстроки,поиск максимального минмального элемента в массиве,замены подстроки и т.д.....а ещё вперемешку с 216-ой всё чаще появляется EStackOverlow.....Может быть ещё потому, что карты загружаются в объект TImage из файлов bmp,(вообще я хочу конечно создать res файл с ними,просто руки не дошли).
    Вот я прошу людей добрых,чтоб помогли мне понять из-чего и что, случается,а то у меня уже крыша съезжает,.....если кому-нибудь исходник понадобиться оставьте мыло, вышлю, ну или сами напишите на tarackanius666@mail.ru
     
  2. Barmutik

    Barmutik Гость

    Колупаться в чужом исходнике дело краней неблагодарное ..

    А что говорит CallStack после ошибки? Если уж совсем нет никакой возможности отдебажить .. пишите в лог файл а потом уже анализируйте его...

    Судя по Вашеиму описанию .. ошибка может крыться в банальной неинициализации переменных или доступу в неиницилизрованные куски памяти...

    Просто брать и под отладкой искать такуие ситуации...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей