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

Вниз

Ошибки переменных   Найти похожие ветки 

 
DagOT-R ©   (2011-06-02 12:24) [0]

Столкнулся с такой ошибкой: переменная, изменяющаяся в цикле for, внутри вложенного цикла, ведет себя некорректно.

Скриншот в run-time на точке останова:
http://i036.radikal.ru/1106/80/ec3f368ec207.png
я наскоряк заменил все вхождения этой переменной на integer(a), вроде пишет результат правильно, но все равно далее функции не работают корректно. Уточняю: все использованные переменные - типа integer, переменная "а" - внутри цикла. На всякий случай переустановил делфи - результат тот же. Подскажите, что нужно делать/не делать, чтобы впоследствии таких непоняток не происходило.


 
DagOT-R ©   (2011-06-02 12:32) [1]

добавлю:
а изменяется примерно так:


var a, b, dopusk: integer;
begin
...
for a:=0 to dopusk*2 do
 for b:=1 to 9 do
   begin
     ...//та самая проверка условия
   end;
...


 
sniknik ©   (2011-06-02 12:34) [2]

http://delphimaster.net/view/15-1305447899/


 
DagOT-R ©   (2011-06-02 13:00) [3]

разверну мысль. Часть кода:


...
   bit1.Canvas.Brush.Color:=clred;
   bit1.Canvas.Pen.Style:=psclear;
   bit1.Canvas.Pen.Width:=3;
   bit1.Canvas.Brush.Style:=bssolid;
   bit1.Canvas.Rectangle(rect(0, 0, image1.picture.Bitmap.Width, image1.picture.Bitmap.Height));
   bit1.Canvas.Brush.Color:=clgreen;
   bit1.Canvas.Brush.Style:=bsclear;
   bit1.Canvas.Pen.Style:=psSolid;
//    bit1.Canvas.moveto(5, 5); bit1.Canvas.LineTo(image1.picture.Bitmap.Width-30, image1.picture.Bitmap.Height-30);
   for b:=1 to 9 do
     if (form1.SpinEdit1.Value-dopusk+integer(a) > 0)and(integer(a)<dopusk*2) then
       begin
         poi:=point(ZeroPoint.X-((panel1.Height-30-ZeroPoint.Y) div (dopusk*2)-3)*integer(a)+b*GraphSize.X div 10, ZeroPoint.y-round(GraphSize.Y*graphic(form1.SpinEdit1.Value+integer(a)-dopusk, b/10))+1+((panel1.Height-30-ZeroPoint.Y)div (dopusk*2)-3)*integer(a));
         bit1.Canvas.moveto(poi.X, poi.Y);
         poi:=point(ZeroPoint.X-((panel1.Height-30-ZeroPoint.Y) div (dopusk*2)-3)*(integer(a)+1)+b*GraphSize.X div 10, ZeroPoint.y-round(GraphSize.Y*graphic(form1.SpinEdit1.Value+(integer(a)+1)-dopusk, b/10))+1+((panel1.Height-30-ZeroPoint.Y)div (dopusk*2)-3)*(integer(a)+1));
         bit1.Canvas.LineTo(poi.X, poi.Y);
       end;
...


если убрать комментарий,, выделенный жирным текстом, то тот код рисует линию как надо. Однако, функции moveto/lineto внутри не рисуют вообще. Думал, рисуют за пределами канвы, вывел результаты расчета в переменную poi - в ней все значения верны.


 
DagOT-R ©   (2011-06-02 13:37) [4]

Все, нашел в чем проблема. Тема закрыта.


 
DiamondShark ©   (2011-06-02 14:02) [5]


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

Стрелять-колотить. Когда ж вы все передохните-то, находители, блин.



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

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

Наверх




Память: 0.46 MB
Время: 0.003 c
15-1306362957
IPranker
2011-05-26 02:35
2011.09.18
Замыкания в Delphi.


15-1306654677
ddd329
2011-05-29 11:37
2011.09.18
Трехзвенка в C#


8-1187098476
leonidus
2007-08-14 17:34
2011.09.18
Где найти компонент отображающий Thumbnail ?


15-1305036794
Empleado
2011-05-10 18:13
2011.09.18
MS Skype


2-1306938700
11223344
2011-06-01 18:31
2011.09.18
Enter, Leave на для ListBox.Items





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский