Ja ich habe da so einen Cashmechanismus für Stammdaten (wir haben sehr viele stammdaten), Bewegungsdaten werden natürlich live ermittelt...
Das ganze Erfolgt in einem Timer Ereignis.
Delphi-Quellcode:
Try
//Timer sperren
MyTimer.Enabled := False;
//der Ruft nur killtimer aus updatetimer auf. aber hier könnte evtl Getlast error auch schon einen Wert haben....:( ok
RefreshDatasets;
//Die Stammdaten neu cachen welche in der loggtabelle Änderungen aufweisen.
MyTimer.Enabled := True;
//<-- hier passiert der Fehler
//bzw in der methode Extctrls.TTimer.UpdateTimer;
except
on E:
Exception do
begin
e.
message := '
Fehler 67: ' + e.
Message+
#13#10'
SysErrorMessage:'+SyserrorMessage(GetlastError);
MyTimerActive := false;
raise;
end;
end;
UpdateTimer ist in Delphi 7 seltenst dämlich implementiert! Weil die Fehler meldung nur auf Systemen kleiner windows 2000 sinnstiftend ist. Diese Methode möchte ich aber nicht patchen!
Delphi-Quellcode:
procedure TTimer.UpdateTimer;
begin
KillTimer(FWindowHandle, 1);
if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then
if SetTimer(FWindowHandle, 1, FInterval, nil) = 0 then
raise EOutOfResources.Create(SNoTimers);
end;