Hallo,
ich habe ein merkwürdiges Problem beim Wechsel eines Programms von D7 auf D2010. Das Programm ist komplett identisch übernommen, lediglich einige Komponenten für OPC-Zugriffe sind aktualisiert. Im Programm werden verschiedene Timer erstellt, die den Aufruf unterschiedlicher Erfassungsgruppen steuern. Die Timer sind jeweils in einer Klasse zusammengefasst.
Delphi-Quellcode:
TSavetimer = class(TComponent)
private
STimer: TTimer;
RTimer: TTimer;
SInterval: integer;
RInterval: integer;
AInterval: integer;
public
constructor create(conn: TUniconnection; aSaveObj: TdOPCGroup);
destructor destroy;
procedure SaveTimerEvent(sender: TObject);
procedure ReadTimerEvent(sender: TObject);
end;
constructor TSavetimer.create(conn: TUniconnection; aSaveObj: TdOPCGroup);
begin
inherited create(application);
SaveObj := aSaveObj;
STimer := TTimer.Create(self);
STimer.Enabled := false;
STimer.OnTimer := SaveTimerEvent;
RTimer := TTimer.Create(self);
RTimer.Enabled := false;
RTimer.OnTimer := ReadTimerEvent;
end;
procedure TSavetimer.SaveTimerEvent(sender: TObject);
var tr: TSaveThread;
begin
try
tr := TSaveThread.Create(self);
tr.FreeOnTerminate := false;
tr.execute;
repeat sleep(10) until tr.Terminated;
tr.Free;
except
//
end;
end;
Die Timer sind den Gruppen über einen entsprechenden Pointer zugeordnet. D7 läuft seit Jahren problemos, D2010 löst keine Timer aus.
Hat irgendjemand einen Tipp?