Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.01;
Скачать: CL | DM;

Вниз

Непонятное изменение значения переменной   Найти похожие ветки 

 
Вова   (2012-12-23 08:18) [0]

Есть функция

function DrawKontur(var QP: TQuickPixels; QPStart: TQuickPixels;
 x, y: integer): Boolean;
var
 Pixel1: Cardinal;
 Intensity: byte;
 matr: array [1 .. 3, 1 .. 3] of byte;
 i, j, x1, y1, x2, y2, x0, y0: integer;

begin

 DrawKontur := true; // пока не используется и всегда истина.

 if (x=0) or (y = 0) or (x = (QP.Width-1)) or (y = (QP.Height-1)) then
   exit;// на границах не считаем

 for i := (y - 1) to (y + 1) do
 begin
   for j := (x - 1) to (x + 1) do
   begin
     if (j < 0)  or (j > (QP.Width-1)) or (i < 0) or (i > (QP.Height-1)) then
     begin
         continue;
     end;

     x2 := (j - (x - 1));
     y2 := (i - (y - 1));
     x1 := ((j -(x - 1))-1);
     y1 := (i - (y - 1));

     Pixel1 := QPStart.GetPixels24(j, i);
     Intensity := getIntensity(Pixel1);
     matr[x2, y2] := Intensity;

      if x2 = 0 then
       continue;

   end;
 end;
end;


которую я пытаюсь заставить работать, но наткнулся на полтергейст: при входе в функцию с x = 1 и y = 1 (ну то есть при первом же заходе, при котором мы попадаем в цикл). Заходим в цикл и в первом проходе имеем i = 0,  но после выполнения matr[x2, y2] := Intensity; i вдруг становится равной 16711680, эта цифра напоминает значение переменной Pixel1 = 16777215 (Intensity = 255, x2=0,y2=0), а вопрос заключается в том что: КАК? и ПОЧЕМУ? и что делать?

Embarcadero RAD Studio XE, window 7 x64


 
MBo ©   (2012-12-23 09:42) [1]

Индекс y2 (к примеру) уже на первом шаге становится 0, и matr[x2, y2] портит воздух за пределами матрицы
Со включенной опцией проверки диапазонов это можно было бы отловить сразу.

P.S. Внутренний if не нужен


 
Вова   (2012-12-23 09:46) [2]

matr: array [0 .. 2, 0 .. 2] of byte; да, оказывается дело в тос как объявлять массив.....


 
Dimka Maslov ©   (2012-12-23 11:45) [3]

Включи проверку индекса массива и будет счастье.



Страницы: 1 вся ветка

Текущий архив: 2013.09.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
2-1355773456
SKIPtr
2012-12-17 23:44
2013.09.01
полоса прокрутки для TPanel


15-1364502944
Разведка
2013-03-29 00:35
2013.09.01
Verba - что это?


15-1364145881
Ъ-Х
2013-03-24 21:24
2013.09.01
Чего бы сыграть на акустической гитаре?


15-1364300349
MBo
2013-03-26 16:19
2013.09.01
Касперский не любит мою программу


15-1364430073
RGV
2013-03-28 04:21
2013.09.01
код Делфи to Java