Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.04.2015, 15:27
Morik666 Morik666 вне форума
Прохожий
 
Регистрация: 19.09.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Ошибка в SetLength(Graph,25,25);

Шел 38-й час моего марафона по написанию кода. Уткнулся в ошибку "debugger fault notification" в строке
Код:
var Graph: array of array of byte;
...
SetLength(Graph,25,25);
(изначально она по другому выглядела, но даже после вписывания обычных чисел ошибка не пропала) . В момент вылета проект весит 1228 КБ, свободной оперативы еще 1,5 ГБ. При этом в другом проекте эта же строка пашет. Всего в проекте свыше 1,5 К строк, а в функции с этой строкой где-то 50-80, а коментов нету, ибо писалось за эти 38 часов.
Вопрос в том, в чем может быть ошибка.
Заранее спасибо.
Ответить с цитированием
  #2  
Старый 08.04.2015, 15:37
Morik666 Morik666 вне форума
Прохожий
 
Регистрация: 19.09.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Если меняю на
Код:
SetLength(Graph,14,15);
то все работает, а
Код:
SetLength(Graph,15,15);
уже вылетает.
Выгрузил пару не нужных динамических массивов, начало хавать большие размерности. Значит это ограничение в компиляторе. Где может быть это ограничение?

Последний раз редактировалось Morik666, 08.04.2015 в 15:51.
Ответить с цитированием
  #3  
Старый 08.04.2015, 15:46
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ошибка-то какая? Информации из заголовка окна маловато.
Если не знаешь как получить описание ошибки нажми Crtl+C в окне с ошибкой, а затем вставь текст сюда.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #4  
Старый 08.04.2015, 15:58
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Morik666
Если меняю на
Код:
SetLength(Graph,14,15);
то все работает, а
Код:
SetLength(Graph,15,15);
уже вылетает.
Выгрузил пару не нужных динамических массивов, начало хавать большие размерности. Значит это ограничение в компиляторе. Где может быть это ограничение?

Раз ты не хочешь давать кода ошибки, то могу предположить что объявляешь ты эти дин. массивы внутри процедур и тупо падаешь по длине стека.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 08.04.2015, 16:05
Morik666 Morik666 вне форума
Прохожий
 
Регистрация: 19.09.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Ошибка-то какая? Информации из заголовка окна маловато.
Если не знаешь как получить описание ошибки нажми Crtl+C в окне с ошибкой, а затем вставь текст сюда.
Вот ошибка:
---------------------------
Debugger Fault Notification
---------------------------
Project D:\Delphi\Uniwersity\k4s2\ČČ\Project1.exe faulted with message: 'access violation at 0x00405a61: write of address 0x00090f28'. Process Stopped. Use Step or Run to continue.
---------------------------
OK
---------------------------
Ответить с цитированием
  #6  
Старый 08.04.2015, 16:09
Morik666 Morik666 вне форума
Прохожий
 
Регистрация: 19.09.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Раз ты не хочешь давать кода ошибки, то могу предположить что объявляешь ты эти дин. массивы внутри процедур и тупо падаешь по длине стека.

Да, объявляю в процедуре, но где еще их можно объявлять и как избежать падения в стеке.

Выглядит окошко так. (как тут делать спойлер не знаю)
Ответить с цитированием
  #7  
Старый 08.04.2015, 16:19
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Я ж не знаю как у тебя устроена программа. Продумай архитектуру, возможно дин. массивы тебе не нужны. Ошибка у тебя не по стеку, а по обращению к неинициализированной области памяти.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #8  
Старый 08.04.2015, 16:25
Morik666 Morik666 вне форума
Прохожий
 
Регистрация: 19.09.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Решил проблему переходом на статические массивы с заранее введенной немереной размерностью. Как временное решение покатит, но вопрос как увеличить глубину стека у компилятора остается открытый.
Ответить с цитированием
  #9  
Старый 08.04.2015, 16:35
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Я не думаю что у тебя такой суперпупермегапроект которому не хватит стандартных размеров стека. Пересматривай архитектуру приложения.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #10  
Старый 08.04.2015, 19:33
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Больше похоже на неполадки в системе, поскольку вот сейчас только ставил опыты, нолики в вашей строке прибавлял - ошибки стали вылезать лишь при
Код:
SetLength(Graph,250000000,250000000);
причём типа аут офф мемори, а у меня в данный момент не такой уж и мощный нубук, тем более он с ХР, но до таких размерчиков массив инициализируется нормально. Может оську обновить нужно?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025