Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2008, 10:42   #1
Булат
Новичок
Джуниор
 
Регистрация: 24.04.2008
Сообщений: 2
По умолчанию Помогите исправить ошибку

Ситуация такая, с помощью массива идет обработка попиксельного изображения.Почти все картинки обрабатываются так как надо, только у некоторых возникает ошибка переполнения стека,и не в сслылочном моментеи не в рекурсии, а:
"
Код:
if (massiv[j,i,1] = -13)or(massiv[j,i,1] = -17) then
         begin
            Form2.Image1.Canvas.Pixels[i-1,j-1]:= 255;
         end
         else
";
i,j - лежат в области, и если заменить это выражение на(10 и 211 просто как пример(i=11,j=212)):
Код:
"
if (massiv[j,i,1] = -13)or(massiv[j,i,1] = -17) then
         begin
            Form2.Image1.Canvas.Pixels[10,211]:= 255;
         end
         else
"
то тогда все срабатывает.Но это же не решение. Помогите

Последний раз редактировалось Stilet; 24.04.2008 в 10:45.
Булат вне форума Ответить с цитированием
Старый 24.04.2008, 13:43   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Булат Посмотреть сообщение
....возникает ошибка переполнения стека.........
Функцию покажите целиком. Стэк переполняется при глубоких рекурсиях и/или при выделении больших локальных переменных. Подозреваю, что здесь второй случай.
B_N вне форума Ответить с цитированием
Старый 24.04.2008, 15:17   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вы в результате таких вычислений : I-1, J-1 не вываливаетесь за нижнюю границу индексов массива? У вас I,J могут быть равны нулю?
mihali4 вне форума Ответить с цитированием
Старый 25.04.2008, 10:01   #4
Булат
Новичок
Джуниор
 
Регистрация: 24.04.2008
Сообщений: 2
По умолчанию

да нет конечно, не выхожу я за границу.Про локальные переменные я тоже думал, но ведь такая ситуация возникает только на нескольких картинках остальные обрабатываются нормально.Хотя вот сейчас вроде сократил лишние ппеременные, вроде пошло.
А на будующее, вроде если происходит запись в массив по индексу за границами, тогда возникает ошибка, а если чтение, тогда все нормально, компилятор случаем не подвыделяет память при случайном обращении не по индексу. И еще где можно увеличить/уменьшить размер стека?
Булат вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку в задаче Vladislav_87 Паскаль, Turbo Pascal, PascalABC.NET 4 04.07.2008 12:27
Калькулятор полиномов. Помогите исправить ошибку fen99 Общие вопросы C/C++ 1 20.06.2008 16:17
Помогите исправить ошибку в задаче VANOLORD Паскаль, Turbo Pascal, PascalABC.NET 9 19.05.2008 22:16
Помогите исправить ошибку в коде... prizrak1390 Общие вопросы Delphi 4 26.04.2008 13:19
помогите исправить ошибку. alen666 Паскаль, Turbo Pascal, PascalABC.NET 11 08.03.2008 16:43