求助一个关于对时间进行处理的问题(80分)

  • 主题发起人 主题发起人 孤云
  • 开始时间 开始时间

孤云

Unregistered / Unconfirmed
GUEST, unregistred user!
A[1] |---------|--------------|----------| //假设|-20-|-40-|-25-|
1 2 3 //1,2,3表示第几次运算
A[2] |------------|-------|------------------|
1 2 3
A[3] |---------------------|-------------|-------------------|
1 2 3
A[4] |
问题是这样的
程序开始,第一次计算得到A不同的时间长度,接着等一段时间,以后当等待的时间接近A的值时都要重新计算A

我是这样做的
cp:=now;
for i:=1 to n do
begin
betime:=cp+A/24/3600;
bt:=A;
end;

while true do
begin
for i:=1 to n do
begin
if SencondsBetwween(cp,betime)=bt Then
begin
........
........//执行必要的操作,同时产生新的A

betime:=betime+A/24/3600;
bt:=bt+A;
end

end;

end;

但是感觉不太稳定,心里也没底,如果n非常大的话,不知道能不能响应SecondsBetween
请大家帮帮忙能不能提供其他好的思路和想法,先谢了
//不让用Timeer控件
 
function SecondsBetween(const ANow, AThen: TDateTime): [red]Int64;[/red]

它的返回值是Int64类型,这个类型支持的范围是:
Int64 -2^63..2^63-1(-2的63次方-正2的63次方减1) signed 64-bit
足够你用了,不用担心.
 
狂晕,没看懂问题
 
to bbsli
就是一个控制过程
就是同时对每一个点进行控制,控制时间长度为A的值,当这段时间快结束时,重新计算A的值,这个控制过程要持续很长时间,由于各个点的控制时间不一样,不知道应该怎么编程能比较稳定、可靠
希望大家给点思路!
 
SecondsBetween
 
调试了一下
好像会出现重复的情况,如会重复计算第2次运算的A
 
这个程序,如果在内循环中从1到n都不满足SencondsBetwween(cp,betime)=bt的条件,好象会死循环喔. 如果在if外部改变了cp或betime或bt的值, 应写出是在哪里改的.

出现重复应该是因为内循环在重置a的值后没有跳出循环,而是接着往下运算. 而在同一组循环中, 又出现了满足条件的cp, betime与bt组合
 

Similar threads

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