请看代码://计算回归方程的函数
Function Hui_gui(n:integer;xi:array of int64;yi:array of int64;var a:int64;var b:int64;var R:int64):int64;
var
num,i,j:integer;
xi2,yi2,xiyi:array of int64;
sum_xi,sum_yi,sum_xi2,sum_yi2,sum_xiyi:int64;
avg_x,avg_y:real;
LXY,LYY,LXX:real;
begin
num:=n;
setlength(xi2,num);
setlength(yi2,num);
setlength(xiyi,num); //计算xi平方,yi平方,xi*yi ;
for i:=0 to num-1 do
begin
xi2[n]:=xi[n]*xi[n];
yi2[n]:=yi[n]*yi[n];
xiyi[n]:=xi[n]*yi[n];
end; //计算xi,yi,xi2,yi2,xi*yi的统计和
sum_xi:=0;
sum_yi:=0;
sum_xi2:=0;
sum_yi2:=0;
sum_xiyi:=0;
for i:=0 to num-1 do
begin
sum_xi:=sum_xi+xi[n];
sum_yi:=sum_yi+yi[n];
sum_xi2:=sum_xi2+xi2[n];
sum_yi2:=sum_yi2+yi2[n];
sum_xiyi:=sum_xiyi+xiyi[n];
end; //计算平均值:avg_x,avg_y
avg_x:=sum_xi / n;
avg_y:=sum_yi / n; //计算LXY,LYY,LXX
LXY:=sum_xiyi-n*avg_x*avg_y;
LYY:=sum_yi2-n*avg_y*avg_y;
LXX:=sum_xi2-n*avg_x*avg_x; //计算b,a
b:=LXY; ///LXX;
a:=avg_y-b*avg_x; Hui_gui:=1;
end;procedure TChartForm5.FormActivate(Sender: TObject);
var
i,TotalCount:integer;
p_xi,p_yi:array of int64;
p_a,p_b,p_R:int64;
x:int64;
astring:string;
begin // 根据 Table5 中的 Sys 字段 来确定
if DataModule1.Table5.Active=False then
DataModule1.Table5.Active:=True;
with DataModule1.Table5 do
begin
TotalCount:=RecordCount;
setlength(p_xi,TotalCount);
setlength(p_yi,TotalCount);
first;
for i:=0 to TotalCount-1 do
begin
p_xi[i]:=FieldByName('Sys').AsInteger;
p_yi[i]:=FieldByName('Dia').AsInteger;
next;
end;
end; //调用Hui_gui()
p_a:=1;
p_b:=1;
p_R:=1; for i:=0 to TotalCount-1 do
begin
self.RichEdit1.Lines.Add(inttostr(p_xi[i]));
end;
ShowMessage ('Value tripled: ' + IntToStr (TotalCount));
x:=Hui_gui(TotalCount,p_xi,p_yi,p_a,p_b,p_R);
end;
编译没问题,运行时 x:=Hui_gui(TotalCount,p_xi,p_yi,p_a,p_b,p_R);
这一句报错,“Invalid pointer operation”,是子函数错了还是调用时错了?
Function Hui_gui(n:integer;xi:array of int64;yi:array of int64;var a:int64;var b:int64;var R:int64):int64;
var
num,i,j:integer;
xi2,yi2,xiyi:array of int64;
sum_xi,sum_yi,sum_xi2,sum_yi2,sum_xiyi:int64;
avg_x,avg_y:real;
LXY,LYY,LXX:real;
begin
num:=n;
setlength(xi2,num);
setlength(yi2,num);
setlength(xiyi,num); //计算xi平方,yi平方,xi*yi ;
for i:=0 to num-1 do
begin
xi2[n]:=xi[n]*xi[n];
yi2[n]:=yi[n]*yi[n];
xiyi[n]:=xi[n]*yi[n];
end; //计算xi,yi,xi2,yi2,xi*yi的统计和
sum_xi:=0;
sum_yi:=0;
sum_xi2:=0;
sum_yi2:=0;
sum_xiyi:=0;
for i:=0 to num-1 do
begin
sum_xi:=sum_xi+xi[n];
sum_yi:=sum_yi+yi[n];
sum_xi2:=sum_xi2+xi2[n];
sum_yi2:=sum_yi2+yi2[n];
sum_xiyi:=sum_xiyi+xiyi[n];
end; //计算平均值:avg_x,avg_y
avg_x:=sum_xi / n;
avg_y:=sum_yi / n; //计算LXY,LYY,LXX
LXY:=sum_xiyi-n*avg_x*avg_y;
LYY:=sum_yi2-n*avg_y*avg_y;
LXX:=sum_xi2-n*avg_x*avg_x; //计算b,a
b:=LXY; ///LXX;
a:=avg_y-b*avg_x; Hui_gui:=1;
end;procedure TChartForm5.FormActivate(Sender: TObject);
var
i,TotalCount:integer;
p_xi,p_yi:array of int64;
p_a,p_b,p_R:int64;
x:int64;
astring:string;
begin // 根据 Table5 中的 Sys 字段 来确定
if DataModule1.Table5.Active=False then
DataModule1.Table5.Active:=True;
with DataModule1.Table5 do
begin
TotalCount:=RecordCount;
setlength(p_xi,TotalCount);
setlength(p_yi,TotalCount);
first;
for i:=0 to TotalCount-1 do
begin
p_xi[i]:=FieldByName('Sys').AsInteger;
p_yi[i]:=FieldByName('Dia').AsInteger;
next;
end;
end; //调用Hui_gui()
p_a:=1;
p_b:=1;
p_R:=1; for i:=0 to TotalCount-1 do
begin
self.RichEdit1.Lines.Add(inttostr(p_xi[i]));
end;
ShowMessage ('Value tripled: ' + IntToStr (TotalCount));
x:=Hui_gui(TotalCount,p_xi,p_yi,p_a,p_b,p_R);
end;
编译没问题,运行时 x:=Hui_gui(TotalCount,p_xi,p_yi,p_a,p_b,p_R);
这一句报错,“Invalid pointer operation”,是子函数错了还是调用时错了?
解决方案 »
- try...except....结构中,如果发生异常,执行完except中的语句后,还会不会执行下面的语句?
- 请教:这样的ComboBox如何实现,帮忙啊,UP有分
- 怎么样在窗口与panel控件中进行背景图片的平铺?
- delphi6制作组件问题
- 短消息方式怎样得到短消息中心的时间????
- 救命啊!! 麻烦各位帮忙!
- 帮我推荐一个delphi的安装制作工具
- 今天眼睛不舒服,简单的sql语句都不知道该写,请各位帮帮忙,问题解决结贴,在线....
- 用CCproxy作代理,客户端ftp下载不好用,http的好用 在flashget和ccproxy中怎样设置???
- SQL保存问题
- 弱问题:关于TreeView中节点遍历,请高手用喝茶的时间解答一下,谢
- 查找记录(急,在线等待)
Function Hui_gui(n:integer;xi:variant;yi:variant;var a:int64;var b:int64;var R:int64):int64;
var
xi1:Variant;
yi1:variant;
begin
num:=n;
xi1:=VarArraryCreatye([0,n-1],VarInt64);
yi1:=VarArraryCreatye([0,n-1],VarInt64);
......
end;
动态数组做参数如何传递给另一个自定义函数?
例如上面的例子,p_xi,p_yi是实际数组,要赋值以后传递给函数:Hui_gui(),
具体的传递方法是怎样的?回:soaringsouth(栈桥捉鳖)
你的办法好象不行。