请大家帮帮忙!看看这段代码 ( 积分: 50 )

  • 主题发起人 主题发起人 z_j_ren
  • 开始时间 开始时间
Z

z_j_ren

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
I:integer;
II,J,K,QJB,CSQ,CGQ : Real;
QJ:Array [0..20] of Real;
NJ:integer;
test:Real;
begin
NJ:=13;
QJ[1] :=-1800;
QJ[2] :=34.92;
QJ[3] :=100.44;
QJ[4] :=94.68;
QJ[5] :=137.88;
QJ[6] :=224.64;
QJ[7] :=184.68;
QJ[8] :=201.24;
QJ[9] :=288;
QJ[10]:=285.12;
QJ[11]:=100.8;
QJ[12]:=34.56;
QJ[13]:=113.04;
For I := 1 to NJdo
begin
if (QJ>=0) then
begin
CGQ:=CGQ+QJ;
end
else
begin
test:=ABS(QJ);
CSQ:=CSQ+ABS(QJ);
end;
end;
if CSQ=CGQ then
//调试时,这里的CSQ和CGQ都是1800,但是程序不执行QJB:=0
QJB:=0 //而是执行QJB:=CSQ-CGQ,并且QJB不为0
else
QJB := CSQ-CGQ;
end;
请各位大侠帮帮忙!
 
procedure TForm1.Button1Click(Sender: TObject);
var
I:integer;
II,J,K,QJB,CSQ,CGQ : Real;
QJ:Array [0..20] of Real;
NJ:integer;
test:Real;
begin
NJ:=13;
QJ[1] :=-1800;
QJ[2] :=34.92;
QJ[3] :=100.44;
QJ[4] :=94.68;
QJ[5] :=137.88;
QJ[6] :=224.64;
QJ[7] :=184.68;
QJ[8] :=201.24;
QJ[9] :=288;
QJ[10]:=285.12;
QJ[11]:=100.8;
QJ[12]:=34.56;
QJ[13]:=113.04;
For I := 1 to NJdo
begin
if (QJ>=0) then
begin
CGQ:=CGQ+QJ;
end
else
begin
test:=ABS(QJ);
CSQ:=CSQ+ABS(QJ);
end;
end;
if CSQ=CGQ then
//调试时,这里的CSQ和CGQ都是1800,但是程序不执行QJB:=0
QJB:=0 //而是执行QJB:=CSQ-CGQ,并且QJB不为0
else
QJB := CSQ-CGQ;
end;
请各位大侠帮帮忙!
 
if abs(CSQ-CGQ)<0.00001 then

看看呢,后面的0点几可以自己写小的
 
大概是因为是用的浮点型的数值吧,虽然就可见的结果来说,两个都是1800,但是,一个是经过计算得到1800,一个是直接赋值得到1800,虽然不知道对于delphi来说有什么区别,但区别是确实有的。就是说,虽然你看见CGQ是1800,事实上它是1800.00..n个0..003566...
而如果你是想直接比较值,可以使用SameValue,
if SameValue(CSQ, CGQ) then
这样,就会发现,得到的QJB是0。
 
if CSQ=CGQ then
//调试时,这里的CSQ和CGQ都是1800,但是程序不执行QJB:=0
QJB:=0 //而是执行QJB:=CSQ-CGQ,并且QJB不为0
else
本来我的程序是没有这3行的,我就是想得到QJB := CSQ-CGQ;
如果是0,QJB就等于0,如果不是,QJB就等于其差值
并且CSQ和CGQ有时候不是相同的
比如,我把QJ[]的值改变后,CSQ不一定就等于CGQ了
 
还有,如果我把QJ这个数组变成13个变量来做的话,好像就不会出现上述问题
 
SpStruct = class;

SpStruct = class(TRemotable)
private
FfeeCode: String;
FlinkID: String;
FspData: String;
FuserMS: String;
published
property feeCode: String read FfeeCode write FfeeCode;
property linkID: String read FlinkID write FlinkID;
property spData: String read FspData write FspData;
property userMS: String read FuserMS write FuserMS;
end;
ArrayOfspStruct = array of spStruct;

SmsOther = interface(IInvokable)
['{8B1FC8D5-E60F-B87F-AD4B-75407E8D7845}']
function send(const sendPack: ArrayOfspStruct): integer;
stdcall;
这是我调用webservices的内容,谁能给我解释一下其中的意思,并告诉我最后面的函数怎么用,应该在send()中加什么东西,谢谢!
 
我还想问个问题。
为什么我定义了Real变量I,然后给I赋值(比如1800),调试时显示的是1800。而我把I的类型改为Single或double,调试是I的值就不是1800了,有没有解决方案。是不是我把变量类型搞错了
 
多人接受答案了。
 
后退
顶部