ActivationTimer
-
Hallo,
kennt Sie jemand mit dem ActivationTimer aus?
http://www.codeguru.com/Cpp/W-P/system/misc/article.php/c5783/Habe es wie unter Usage beschrieben implementiert. Hier mein Code:
void AuslastungFrm::datenaustausch() { ActivationTimer actTimer; actTimer.AddTask(60000, AuslastungFrm::verbinden); }
oder auch nur so
void AuslastungFrm::datenaustausch() { ActivationTimer actTimer; actTimer.AddTask(60000, verbinden); }
Es kommt immer dieser Fehler:
C:\Dev-Cpp\auslastung\AuslastungFrm.cpp In member functionvoid AuslastungFrm::datenaustausch()': 96 C:\\Dev-Cpp\\auslastung\\AuslastungFrm.cpp no matching function for call to
ActivationTimer::AddTask(int, <unknown type>)'
note C:\Dev-Cpp\auslastung\ActivationTimer.h:139 candidates are: int ActivationTimer::AddTask(long unsigned int, void*, void*)
C:\Dev-Cpp\auslastung\Makefile.win [Build Error] [AuslastungFrm.obj] Error 1Hat irgendwer eine Idee woran das liegt?
Danke & Gruß
Fabian
-
oder gehört das eher ins WinAPI Forum...
wenn ja bitte verschieben!Danke & Gruß
-
Die Fehlermeldung sagt aus, daß du AddTask mit falschen Parametern aufrufst...
'AuslastungFrm::verbinden' mußt du als statische Methode der Klasse definieren und Aufruf dann mit:
void AuslastungFrm::datenaustausch() { ActivationTimer actTimer; actTimer.AddTask(60000, &AuslastungFrm::verbinden); }
-
Danke erstmal!
jetzt gibts aber einen neuen Fehler!
C:\Dev-Cpp\auslastung\AuslastungFrm.cpp In member function
void AuslastungFrm::datenaustausch()': 96 C:\\Dev-Cpp\\auslastung\\AuslastungFrm.cpp invalid conversion from \
void ()()' to `void'
96 C:\Dev-Cpp\auslastung\AuslastungFrm.cpp initializing argument 2 of `int ActivationTimer::AddTask(long unsigned int, void*, void*)'
C:\Dev-Cpp\auslastung\Makefile.win [Build Error] [AuslastungFrm.obj] Error 1
-
Hallo,
der ActivationTimer-Code ist nicht standard-konform. Er erwartet die Funktion in Form eines void-Pointers. Laut Standard können aber nur beliebige Datenzeiger nach void* konvertiert werden. Nicht aber Funktionszeiger. Damit der Compiler den Code übersetzen kann, musst du einen C-Cast einfügen:// AuslastungFrm::verbinden ist hoffentlich eine statische Memberfunktion! actTimer.AddTask(60000, (void*)&AuslastungFrm::verbinden);
Das geht auf Posix-konformen-System gut. Aber schön ist es nicht.
-
Danke erstmal. Nun wird fehlerfrei kompiliert, aber der Timer funktioniert imho nicht. Es wird keine Verbindung aufgebaut. Werd mich mal nach was anderem umschauen...
Kennt jemand einen Timer/Scheduler der gewisse Funktionen alle 60sec sowie auch alle 30 Tage(1 mal im monat) ausführen kann?
Danke & Gruß