|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка Invalid pointer operation
Сообщение о ошибке с текстом Invalid pointer operation выскакивает после выполнения программы. Программа делает медианную фильтрацию- устраняет шум изображений, размер каретки устанавливаю я (нюанс метода фильтрации), при этом использую динамические массивы, до этого каретка в фильтрации была 3х3 и массивы были статические ошибки не было. Прошу подсказать почему выскакивает ошибка.
Вот полностью главный юнит http://depositfiles.com/files/ivq005c7g http://4ppl.ru/162538 Вот сама программа http://4ppl.ru/162539 Ниже код процедуры самой фильтрации Код:
procedure TMainForm.Filter1Click(Sender: TObject); var i,j,k,l,r,q,g,b,w,ser:integer; t:boolean; vecr:array of integer; br:array of array of integer; can:byte; begin setlength (vecr,si*si); setlength (br,si,si); if fl1 then pb.Min:=0; pb.Max:=bmp.Width-1; pb.Position:=0; begin for i:=0 to paintbox.Width-2 do begin for j:=0 to paintbox.Width-2 do begin for k:=0 to si-1 do // обнуление массиовов begin for l:=0 to si-1 do begin br[k,l]:=0; end; end; for k:=0 to si-1 do // Расчёт значения каждого канала в маске begin for l:=0 to si-1 do begin can:=paintbox.Canvas.Pixels[i+k,j+l]; r:=getrvalue(can); g:=getgvalue(can); b:=getbvalue(can); br[k,l]:=trunc(sqrt(r*r+g*g+b*b)); end; end; q:=0; for k:=0 to si-1 do // переписываем полученные значения каналов begin // в маске, в вектор для последующей их сортировки for l:=0 to si-1 do begin q:=q+1; vecr[q]:=br[k,l]; end; end; t :=true; while t do begin t:=false; for k:=1 to si*si-1 do //метод пузырька begin if vecr[k]>vecr[k+1] then begin w:=vecr[k]; vecr[k]:=vecr[k+1]; vecr[k+1]:=w; t:=true; end; end; end; ser:=(trunc((si*si)/2))+1; paintbox1.Canvas.Pixels[i+1,j+1]:=rgb(vecr[ser],vecr[ser],vecr[ser]); pb.Position:=pb.Position+1; end; end; end; lmikle: пользуем правильные теги!!! Понимаю что чужой код смотреть ни кому не горит желанием. Но буду рад любой помощи или совету. Заранее спасибо Спасибо Imikle за правку и совет. Последний раз редактировалось pazitiff, 22.01.2010 в 10:23. |