Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  02:36[Войти] | [Зарегистрироваться]
Ответ на вопрос № 72794

Вопросы с аналогичными сообщениями об ошибках:
  • Access violation at address ... (776)

    11-09-2009 03:09
    Здравствуйте.
    В одном из проектов при выполнении


    showmessage('Привет')



    Вылезает Access violation.

    В других проектах всё нормально.

    Подскажите куда копать.

    [+] Добавить в избранные вопросы

    Отслеживать ответы на этот вопрос по RSS

    Ответы:


    Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
    Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

    14-09-2009 04:40 | Сообщение от автора вопроса
    To Geo:
    Ну зато на собственном опыте убедился, что записав что-то в "чужую" область памяти
    можно получить неожиданый результат.

    11-09-2009 07:10
    to Fox_It:
    AV тем и коварна, что возникать может не всегда, и что причина возникновения может нахолдиться совсем в другом месте, а не в той строоке, на которой AV выскочил.

    11-09-2009 05:30 | Сообщение от автора вопроса
    Вы не правильно поняли.
    Этот массив вообще в другой ФОРМЕ!
    никакого отношения к дереву не имеет.
    просто после заполнения 1 "лишнего" элемента showmessage начинал глючить везде, во всей программе.

    11-09-2009 05:19
    размерность массива должна совпадать с кол-вом узлов в дереве? тогда может

    setlength(col, validsheet.newTree.Items.Count);


    11-09-2009 05:19 | Вопрос к автору: запрос дополнительной информации
    А вы случайно не создавали функцию с именем ShowMessage? Или может вы что-то используете нестандартное в списке юзес? Попробуйте также запуститься с включенным параметром Use Debug Dcu-s и пройтися по ф7 в самом ShowMessage

    11-09-2009 05:16 | Сообщение от автора вопроса
    Нашел ошибку!

    Значит дело было вот в чём.

    есть в проге массив динамический.

    установил его размер


    setlength(col, 30);



    а заполнил 31 элемент!

    странно что программа нормально отработала


    col[30].nomer := 28;



    и вот после этого и начинались чудеса с showmessage

    11-09-2009 05:12
    на кнопке только OnClick? других событий нет? ActionList не подцеплен? кнопка не Default:=true, Close:=true?

    11-09-2009 05:11
    Автору вопроса:

    Попробуйте для отладки разбить этот код

    showmessage('Листов в списке: ' + inttostr(length(arr)) + #10#13 + 'Листов в дереве: ' + inttostr(collist));


    добавив строковую переменную на 2 части:

    S := 'Листов в списке: ' + inttostr(length(arr)) + #10#13 + 'Листов в дереве: ' + inttostr(collist);
    showmessage(S);


    11-09-2009 05:05 | Сообщение от автора вопроса
    Цикл проходит без проблем, на тестовом дереве 30 узлов.

    Процедурка вызывается по кнопке на форме.
    убрал всё, оставил только showmessage('Привет') и ОШИБКА.

    Любые другие действия отрабатываются нормально.

    В других проектах всё работает хорошо, нет ошибок.

    11-09-2009 05:03
    To Сергей Любезный:
    хард - вряд ли, он же не подгружает элементы дерева в цикле динамически из файла, а вот память очень может быть, я как-то и упустил этот момент :( в свое время я сталкивался с подобной проблемой, и причина была как раз там

    11-09-2009 04:59 | Вопрос к автору: запрос дополнительной информации
    а случаем не может быть такого, что в процессе выполнения цикла validsheet.newTree.Items.Count становится меньше, т.е. узлы дерева удаляются? если узлов не много, попробовать поставить точку останова внутри цикла и каждый раз проверять значкния i, collist, или дописать в конец цикла ShowMessage(IntToStr(collist)); Кстати, какой тип имеет collist, не Byte случайно, а в дереве при этом более 256 узлов?

    11-09-2009 04:55
    Ну раз так - попробуйте потестить на другом компе (не обязательно с Дельфи). Не исключена неисправность оперативной памяти или харда.

    11-09-2009 04:46 | Сообщение от автора вопроса

    Автору вопроса:

    Точку останова надо было поставить и на ShowMessage, дабы проверить, не возникает ли AV раньше.
    Если же доходит до нее, то следует проверить корректность параметра arr в inttostr(length(arr)).

    P.S. Учитесь пользоваться отладчиком.


    Отладчиком пользоваться умею.

    естесственно ставил точку останова на этой строчке, ошибка именно на ней

    11-09-2009 04:44 | Сообщение от автора вопроса
    Что такое arr и откуда оно берется? Access violation скорее всего вылетает по причине не существования arr в памяти на момент выполнения данной строчки кода.
    написал же что не важно что в showmessage Б всё равно ошибка.


    Переместите ваш "Привет" до цикла и убедитесь, что ошибка будет происходить уже на строке collist:=0;

    Переместил, и убедился, что ошибка на showmessage


    Кстате что есть validsheet? validsheet.newTree
    validsheet-форма
    newTree-TTreeview на этой самой форме

    11-09-2009 04:43
    Автору вопроса:

    Точку останова надо было поставить и на ShowMessage, дабы проверить, не возникает ли AV раньше.
    Если же доходит до нее, то следует проверить корректность параметра arr в inttostr(length(arr)).

    P.S. Учитесь пользоваться отладчиком.

    11-09-2009 04:22 | Вопрос к автору: запрос дополнительной информации
    showmessage('Листов в списке: ' + inttostr(length(arr)) + #10#13 + 'Листов в дереве: ' + inttostr(collist));
    Что такое arr и откуда оно берется? Access violation скорее всего вылетает по причине не существования arr в памяти на момент выполнения данной строчки кода.

    11-09-2009 04:13
    Переместите ваш "Привет" до цикла и убедитесь, что ошибка будет происходить уже на строке collist:=0;
    Думаю проблема в том, что либо validsheet либо validsheet.newTree - ссылается не туда куда нужно. Кстате что есть validsheet? validsheet.newTree ?

    11-09-2009 04:00 | Сообщение от автора вопроса
    Сообщение вываливается в программе делал точку остановки на этой строке, ошибка возникает именно на ней.

    вот код
    задача простецкая, вывести колл-во нодов 5-го уровня в дереве и кол-во элементов в массиве.


    collist := 0;
      for i := 0 to validsheet.newTree.Items.Count - 1 do
        if validsheet.newTree.Items[i].Level = 5 then
        begin
          collist := collist + 1;
        end

      showmessage('Листов в списке: ' + inttostr(length(arr)) + #10#13 + 'Листов в дереве: ' + inttostr(collist));

    collist:=0; //эта строчка довлена специально чтобы поставить точку остановки,
                //и убедиться что программа до нее не доходит




    все значения в отладчике корректны,
    но даже если написать showmessage('Привет'), то всё равно ошибка

    Это проект для приветсвия кого? Срочно поменяйте проект, а то может и HDD накрыться!
    А причём тут винт?




    11-09-2009 03:34 | Комментарий к предыдущим ответам
    >>>В одном из проектов при выполнении showmessage('Привет')...
    Это проект для приветсвия кого? Срочно поменяйте проект, а то может и HDD накрыться!

    11-09-2009 03:16 | Вопрос к автору: запрос дополнительной информации
    Скорее всего ошибка не в данной строке, а в предыдущей. Код в студию.

    11-09-2009 03:16 | Вопрос к автору: запрос дополнительной информации
    Это отладчик показал, или заключение сделано на другом основании, что AV происходит на этом месте: showmessage('Привет')?

    Добавьте свое cообщение

    Вашe имя:  [Войти]
    Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
    контрольный вопрос:
    Вода мокрая или сухая?
    в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
    Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
    Тип сообщения:
    Текст:
    Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Вопросы с аналогичными сообщениями об ошибках:
  • Access violation at address ... (776)


    Страница избранных вопросов Круглого стола.
  •   
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования