Форум: "Начинающим";
Текущий архив: 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