Главная страница
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.009 c
15-1364413348
TUser
2013-03-27 23:42
2013.09.01
Пластиковые окна


2-1356156835
alexdn
2012-12-22 10:13
2013.09.01
DBGrid


15-1364544598
O'ShinW
2013-03-29 12:09
2013.09.01
Как бы сделать в Oraclе DML operation inside a query?


15-1364463473
boriskb
2013-03-28 13:37
2013.09.01
Россиянин победил в международном конкурсе программистов Facebook


15-1363938287
Pit
2013-03-22 11:44
2013.09.01
Посоветуйте базу данных! :-)