回复人: ahlian(阿连) (2001-12-19 16:26:22) 得0分
procedure TForm1.Button1Click(Sender: TObject);
var
a:array of string; //定义变长
b:array of real;
i:integer;
begin
table1.Open;
table1.first;
if table1.recordcount>0 then
for i:=0 to table1.recordcount-1 do
begin
a[i]:=table1.fieldbyname('kmdm').asstring;
b[i]:=strtofloat(table1.fieldbyname('kmdm').asstring);
table1.Next;
i:=i+1;
end;
end;
****************也不行**************************
******************出错信息如下***********************
Project project1.exe raised exception class EAccessViolation with
message 'access violation at address 00403b10 in module
'project1.exe'. Read of address FFFFFFFF'. process stopped. Use
step or Run to continue.
******************end*******************************
:=master ; field1 为co_name; field2 为cur_pric.
setlength(a,5);
setlength(b,5); 是什么意思? 有什么作用?
看:
procedure TForm1.Button1Click(Sender: TObject);
var
a:array of string;
b:array of real;
i:integer;
begin
table1.Open;
table1.first;
setlength(a,0);
setlength(b,0); while not table1.Eof do
begin
setlength(a,length(a)+1);
setlength(b,length(b)+1); a[high(a)]:=table1.fieldbyname('kmdm').asstring;
a[high(b)]:=strtofload(table1.fieldbyname('kmdm').asstring); table1.Next;
end;end;
v : variant;
begin
.....
v := recordset.fieldvalue('kmdm');
a[i] := v;
.....
end;
看:
procedure TForm1.Button1Click(Sender: TObject);
var
a:array of string;
b:array of real;
i:integer;
begin
table1.Open;
table1.first;
setlength(a,0);
setlength(b,0); while not table1.Eof do
begin
setlength(a,length(a)+1);
setlength(b,length(b)+1); a[high(a)]:=table1.fieldbyname('kmdm').asstring;
a[high(b)]:=strtofload(table1.fieldbyname('kmdm').asstring); table1.Next;
end;end;
DBDEMOS下的Master表, Table1的databasename:=DBDEMOS; Table1的tablename
:=master ; field1 为co_name; field2 为cur_pric.
试一下, 真行了再把代码写出来好吗?
对了一定给分,并受本人三拜!
对了, 为什么执行到a[high(b)]:=strtofload(table1.fieldbyname'kmdm').asstring);
时提示: [Error] Unit1.pas(46): Incompatible types: 'String' and 'Extended'
我一般都是这样用的:浮点用 Extended,这样把程序改为:procedure TForm1.Button1Click(Sender: TObject);
var
a:array of string;
b:array of Extended; // <----begin
table1.Open;
table1.first;
setlength(a,0);
setlength(b,0); while not table1.Eof do
begin
setlength(a,length(a)+1);
setlength(b,length(b)+1); a[high(a)]:=table1.fieldbyname('kmdm').asstring;
a[high(b)]:=table1.fieldbyname('kmdm').asfloat; // <-----
table1.Next;
end;end;
var
a:array of string;
b:array of Extended; // <----begin
table1.Open;
table1.first;
setlength(a,0);
setlength(b,0); while not table1.Eof do
begin
setlength(a,length(a)+1);
setlength(b,length(b)+1); a[high(a)]:=table1.fieldbyname('kmdm').asstring;
b[high(b)]:=table1.fieldbyname('kmdm').asfloat; // <----- //是b table1.Next;
end;end;
你可真行, 好像可以了, 我再试一下。
但是如果我想把a[i]的值赋给如edit1.text等, 我如何去确定 i 呢? 也就是说假如我知道了数组a中每第 i 个的值, 然后再把数组b中每第 i 个的值
赋给edit1, 如何?
i:integer
a,b ...........begin
....... for i:=low(a) to high(a) do
begin
if a[i]='abc' then
begin
edit1.text:=floattostr(b[i]);
break;
end;
end;
窗体的成员变量或者全局变量。