我有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上。
顯而易見的問題是「改變了什麼」?如果你的環境中唯一改變的是Windows更新,那麼答案是「是的Windows更新是責備」。嘗試卸載最新的一個和測試..? – 2009-12-29 21:15:41
不,史蒂夫,最近要改變的事情並不總是原因。這可能是代碼永遠是錯誤的,最新的更新最終修復了一個錯誤,它允許錯誤的代碼出現意外工作。 – 2009-12-29 21:18:43
也許 - 但這似乎不太可能。當然,恢復任何更新都會指出這個問題。 – 2009-12-29 21:28:48