Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.09.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.002 c
15-1306355396
Юрий
2011-05-26 00:29
2011.09.18
С днем рождения ! 26 мая 2011 четверг


15-1306614600
Юрий
2011-05-29 00:30
2011.09.18
С днем рождения ! 29 мая 2011 воскресенье


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


15-1306479827
xayam
2011-05-27 11:03
2011.09.18
Страны, города, языки и т.д.


15-1306701096
Юрий
2011-05-30 00:31
2011.09.18
С днем рождения ! 30 мая 2011 понедельник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский