高分求助,关于循环与数据库的问题!(200分)

  • 主题发起人 主题发起人 cat101
  • 开始时间 开始时间
C

cat101

Unregistered / Unconfirmed
GUEST, unregistred user!
var
Form1: TForm1;
pp:double;
block:string;
T: array[1..10,1..2] of real;
S: array[1..10,1..2] of integer;
MB,J: array[1..2] of double;
TT,SS: real;
procedure TForm1.Button1Click(Sender: TObject);
var
H1,H2,H3:double;
L,M,N,O,i: integer;
begin
showmessage('开始计算,请稍候!');
//以下数据是从数据库中读到数组中的其中S[i,1]表示四种原料的配比数,
//S[i,2]表示四种原料的配比范围,T[i,1]表示四种原料的成分,T[i,2]表示四种原料的另一种成分,MB为目标成分,pp为四种原料的配比数之和,J分别为两种成分的精度,以下为模拟数据
S[1,1]:=27;
S[1,2]:=10;
S[2,1]:=30;
S[2,2]:=10;
S[3,1]:=20;
S[3,2]:=10;
S[4,1]:=23;
S[4,2]:=10;
T[1,1]:=64;
T[1,2]:=3;
T[2,1]:=63;
T[2,2]:=4;
T[3,1]:=65;
T[3,2]:=1;
T[4,1]:=61;
T[4,2]:=5;
MB[1]:=63.5;
MB[2]:=3;
PP:=100;
J[1]:=40;
J[2]:=10;
FOR L:=S[1,1]-S[1,2] TO S[1,1]+S[1,2] DO
FOR M:=S[2,1]-S[2,2] TO S[2,1]+S[2,2] DO
FOR N:=S[3,1]-S[3,2] TO S[3,1]+S[3,2] DO
FOR O:=S[4,1]-S[4,2] TO S[4,1]+S[4,2] DO
BEGIN
TT:=T[1,1]*L+T[2,1]*M+T[3,1]*N+T[4,1]*O; //第一种成分
SS:=T[1,2]*L+T[2,2]*M+T[3,2]*N+T[4,2]*O; //第二种成分
H1:=ABS(MB[1]-TT/100);
H2:=ABS(MB[2]-SS/100);
// H3:=abs(l+m+n+o-100);
IF (H1<J[1]) AND (H2<J[2]) AND (l+m+n+o=pp) THEN
//判断符合要求的数据存入数据库备用
BEGIN
Table1.Insert;
Table1.FieldValues['N1']:=L;
Table1.FieldValues['N2']:=M;
Table1.FieldValues['N3']:=N;
Table1.FieldValues['N4']:=O;
Table1.FieldValues['N5']:=0;
Table1.FieldValues['N6']:=0;
Table1.FieldValues['N7']:=0;
Table1.FieldValues['N8']:=0;
Table1.FieldValues['N9']:=0;
Table1.FieldValues['N10']:=0;
Table1.Post;
END;
END;
end;
希望高手帮助
1.调试因本程序不能得到结果,数据库始终为空。
2.如何改变算法是计算速度加快,因为这只是四种原料计算,要求计算4——10种原料的配比。
多谢!
 
数据库始终为空?条件不满足啊!
 
在table.insert 之前我没看到你有open的操作啊
还有是不是你用缓冲(CachedUpdate)了?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部