这段循环如何改才对

这段循环怎么改才对?

请问为什么I循环?如何改才对?在线等。。。谢了。。。


Cnt:=100

with   Q1   do
    begin
            sql.Clear;
            SQL.Add( 'Select   *   from   AA   ');
            Open;
            while   not   eof   do
            begin
                        for     I:=0     to   Cnt-1   do
                        begin
                                point[I].X:=FieldValues[ '字段1 '];
                                point[I].Y:=FieldValues[ '字段2 '];
                        end;
                        next;                          
            end;
            polybezier(h,point,Cnt);

    end;

------解决方案--------------------
不是I循环了吧,应该是
with Q1 do
begin
sql.Clear;
SQL.Add( 'Select * from AA ');
Open;
while not eof do
begin
for I:=0 to Cnt-1 do
begin
point[I].X:=FieldValues[ '字段1 '];
point[I].Y:=FieldValues[ '字段2 '];
end;
polybezier(h,point,Cnt); //-----

next;
end;
// polybezier(h,point,Cnt);

end;

------解决方案--------------------
你放在while 之后画,就变成永远只画最后一个BEZIER曲线了
------解决方案--------------------
呵呵,原来你的CNT就是数据库记录条数.
那就不需要用FOR循环了,还有就是你的POINT的声明有问题了应该是一个动态的

var
point:array of Tpoint; // <-----------------------------
h:HDC;
I:Integer;
Cnt:Integer;
begin
h:=getdc(LinesForm.handle);
{point[0].x:=25; point[0].y:=25;
point[1].x:=35; point[1].y:=170;
point[2].x:=130;point[2].y:=120;
point[3].x:=150;point[3].y:=150;
point[4].x:=170;point[4].y:=280;
point[5].x:=250;point[5].y:=115;
point[6].x:=250;point[6].y:=225;}


Cnt:=StrToInt(GetSQL( 'Cnt ', 'Select Count(*)as Cnt from AA '));
setlength(point,Cnt);
i := 0;
with Q1 do
begin
sql.Clear;
SQL.Add( 'Select * from AA ');
Open;
while not eof do
begin
point[I].X:=FieldValues[ '字段1 '];
point[I].Y:=FieldValues[ '字段2 '];
inc(i) // <-----------------------------------
next;
end;
polybezier(h,point,Cnt);
end;

end;