![]() |
TTimer in einer freien Klasse
Hallo,
kann ich einen TTimer in einer von mir freigestalteten Klasse integrieren? Ich denke eigentlich, dass dies möglich sein sollte, was mir eigentlich Probleme bereitet ist die Initialisierung des Timers. Hier mal mein bisheriger Versuch:
Delphi-Quellcode:
Mein Problem ist jetzt die fehlende TComponente, auf die der Timer initialisiert werden müsste. Hat jemand eine Lösung für mich, wie ich das machen könnte?
unit VT_Funktionen;
interface uses Windows, SysUtils, Hilfsfunktionen, ExtCtrls; const constMillimeter = 6400; type TV_Tische = class private Tischbmp: TBitmap; TischDLL: TDLL_Datei; DLL_Handle: THandle; bBewegung, bkalibriert,bAngeschlossen: boolean; iaktuelleTischposition, iZielTischposition, iComport, iFehlercode: integer; Bewegungsueberwachung: TTimer; function Bewegtsich(const Kanal: integer): boolean; function Bremsen: boolean; function Geschwindigkeit_festlegen(const iGeschwindigkeit: integer): boolean; function Beschleunigung_festlegen(const iBeschleunigung: integer): boolean; function VTische_verbinden(Comport: integer): boolean; function Kalibrierung(const Kanal: integer): boolean; function Verfuegbarkeit: boolean; // Diese Funktioen müssen überprüft werden, ob sie wirklich private sein sollen function BewegenABS(dneuPos: double): boolean; overload; function BewegenABS(const KaliPos: string): boolean; overload; function BewegenABS(dneuPos: double; iGeschwindigkeit: integer): boolean; overload; function BewegenABS(dneuPos: double; iGeschwindigkeit, iBeschleunigung: integer):boolean; overload; public constructor create; reintroduce; destructor Destroy; override; property Handle: THandle read DLL_Handle; property Verfuebar: boolean read Verfuegbarkeit; end; ... constructor TV_Tische.create; begin inherited create; bBewegung := false; bkalibriert := false; bAngeschlossen := false; TischDLL := TDLL_Datei.create('MMC.DLL'); if TischDLL.Vorhanden then begin DLL_Handle := TischDLL.Handle; end else DLL_Handle := 0; Bewegungsueberwachung := TTimer.Create(Self); end; ... Vielen Dank BAMatze |
Re: TTimer in einer freien Klasse
Übergib doch einfach nil.
|
Re: TTimer in einer freien Klasse
oder
Delphi-Quellcode:
type TV_Tische = class(TComponent)
|
Re: TTimer in einer freien Klasse
Nochmal danke an dich DeddyH, das war die Lösung.
|
Re: TTimer in einer freien Klasse
Zitat:
Das reintroduce ist nicht erforderlich. Normalerweise braucht man es nur, um eine Compilerwarnung zu unterdrücken (wenn man sich sicher ist, dass man eine Methode überschreiben will). Aber diese Warnung würde hier vom Compiler ohne das reintroduce nicht erscheinen. Cheers! |
Re: TTimer in einer freien Klasse
Hallo
Ich hänge mein Problem mal hier dran. Ich habe eine Klasse erstellt in der unter anderem ein Timer dynamisch erzeugt wird. Funktioniert auch wie gewünscht, aber nur wenn ich diese Klasse direkt erzeuge. Wenn ich eine (Verwaltungs)Klasse erstelle, in der wiederum eine Anzahl von obiger Klasse instanziert werden, wird in den Timerklassen die Timerproc nicht ausgeführt. Es kommt keine Fehlermeldung, die Objekte werden auch erzeugt, ich kann in der Verwaltungs Klasse darauf zugreifen, kein Problem. Nur die Timer scheinen nicht zu laufen :gruebel: Dort wird nur eine Variable decrementiert. Die Verwaltungs Klasse fragt diese ab, wenn diese 0 ist wird die Klasse zerstört. mfg. |
Re: TTimer in einer freien Klasse
Besteht da ein Unterschied bei der Instantiierung?
|
Re: TTimer in einer freien Klasse
Zitat:
In der Verwaltungsklasse läuft ein Timer (das funktioniert ja) in dieser timerprocedure werden die Clientklassen durchlaufen, und ein Counter in der Clientklasse decrementiert, ist dieser 0 wird diese Clientklasse destroyed. Dieser Counter wird beim Erzeugen der Clientklasse auf 10 gesetzt, der timerintervall ist eine Sekunde. Ziel soll sein, dass eine Clientklasse eine Lebensdauer von 10 Sekunden hat. Das Funktioniert jetzt auch so. Meine vorherige Umsetzung des Problems, in jede Clientklasse einen Timer einzubauen,wäre auch ressourcenverschwendung gewesen. Nur so aus Prinzip: Aber warum das nicht ging verstehe ich nicht. mfg. |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
TTimer -> VCL |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz