请问menxin和netameng先生:通过在菜单中执行下面过程时,程序死机,如有时间,
请帮分析一下,好吗?
procedure Tmainform.Timer2Timer(Sender: TObject);
var counttime,sjfy:currency;
Hour, Min, Sec, MSec:word;
ch:TLocateOptions;
kssj,yysj,SYSJ:TdateTIME;
begin
timer2.Enabled:=true;
ch:=[loCaseInsensitive];
with wg_data.tb_main do
begin
first;
while not eof do
begin
if locate('状态;是否在计费',VarArrayOf(['运行',true]),ch)=true then
begin
edit;
Fieldbyname('开始时间').asdatetime:= starttime;
fieldbyname('已用时间').asdatetime:=DateTimePicker1.dateTime-starttime;
DecodeTime(fieldbyname('已用时间').asdatetime,Hour, Min, Sec, MSec);
min:=1+min;
sec:=5+sec;
counttime:=hour*60+min;
fieldbyname('剩余时间').asdatetime:=staytime-fieldbyname('已用时间').asdatetime;
fieldbyname('上机费用').ascurrency:=(counttime*fieldbyname('单价').ascurrency*0.01);
post;
if locate('限时',fieldbyname('已用时间').asdatetime,ch)=true then
begin
kssj:=Fieldbyname('开始时间').asdatetime;
yysj:=fieldbyname('已用时间').asdatetime;
sysj:=fieldbyname('剩余时间').asdatetime;
sjfy:=fieldbyname('上机费用').ascurrency;
Timer2.Enabled:=false;
if messagebox(application.mainform.Handle,pchar('限时时间已到,是否要延时?'),pchar('提示'),mB_OKCANCEL+MB_ICONINFORMATION+MB_DEFBUTTON2)=IDOK THEN
BEGIN
Timer2.Enabled:=true;
edit;
fieldbyname('状态').asstring:='运行';
Fieldbyname('是否在计费').asboolean:=true;
Fieldbyname('开始时间').asdatetime:=kssj+starttime;
fieldbyname('已用时间').asdatetime:=yysj+DateTimePicker1.Time-starttime;
DecodeTime(fieldbyname('已用时间').asdatetime,Hour, Min, Sec, MSec);
min:=1+min;
sec:=5+sec;
counttime:=hour*60+min;
fieldbyname('剩余时间').asdatetime:=sysj+staytime-fieldbyname('已用时间').asdatetime;
fieldbyname('上机费用').ascurrency:=sjfy+(counttime*fieldbyname('单价').ascurrency*0.01);
post;
END
else
begin
Timer2.Enabled:=false;
edit;
fieldbyname('状态').asstring:='待机';
Fieldbyname('是否在计费').asboolean:=false;
post;
end;
end;
end;
next;
end;
end;
end;