这段循环如何改才对
这段循环怎么改才对?
请问为什么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;
请问为什么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;