Delphi程序突然不会发布查询更改

时间:2009-12-29 21:07:11

标签: delphi

我的Delphi应用程序已经生产了几年,最近一段特定的代码已经停止工作。在表单的OnClose事件中,我有以下内容:

procedure TfrmPublicEmpInfo.FormClose(Sender: TObject;var Action: TCloseAction);  
var
  i : integer;  
  strWorkDays : string;  
begin  
  If cbMonday.Checked then strWorkDays := strWorkDays + 'Mo';  
  If cbTuesday.Checked then strWorkdays := strWorkDays + 'Tu';  
  If cbWednesday.Checked then strWorkdays := strWorkDays + 'We';  
  If cbThursday.Checked then strWorkdays := strWorkDays + 'Th';  
  If cbFriday.Checked then strWorkdays := strWorkDays + 'Fr';  
  If cbSaturday.Checked then strWorkdays := strWorkDays + 'Sa';  
  If cbSunday.Checked then strWorkdays := strWorkDays + 'Su';  
  if strWorkDays <> '' then    
  begin  
    qryPubEmployees.Edit;  
    qryPubEmployees.FieldValues['OCCUPATION'] := strWorkDays;  
  end;  

  dtpPEEndTimeChange(self);   
  dtpPEStartTimeChange(self);  

  For i := 0 to ComponentCount - 1 do  
  begin  
    If Components[i] is TQuery Then  
      with Components[i] as TQuery do  
      begin  
        if State = dsEdit then  
        post;  
      end;  
  end;  
end;

进入dtpPEEndTimeChange(self)调用是这样的:

procedure TfrmPublicEmpInfo.dtpPEEndTimeChange(Sender: TObject);  
begin  
  qryPubEmployees.Edit;  
  dbePEEndTime.Field.Value := StrToInt(FormatDateTime('HHMM', dtpPEEndTime.Time));  
end;  

在此函数中,程序调用Windows.pas并卡在:

function GetTickCount; external kernel32 name 'GetTickCount';

它永远不会将更改发布到记录中。

是否有人知道任何Windows更新是否可能导致此故障?我们目前使用的是Windows XP Professional版本5.1 SP 3。

1 个答案:

答案 0 :(得分:2)

GetTickCount返回红衣主教。如果要将结果存储到整数变量,当计算机已启动25天左右时,将导致整数溢出。 我只是猜测,但我们的应用程序曾经存在问题。