AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer in einer Unit

Ein Thema von Popov · begonnen am 19. Mär 2015 · letzter Beitrag vom 23. Mär 2015
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.365 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Timer in einer Unit

  Alt 20. Mär 2015, 15:52
Ich hab zwei Beispiele mit TTimer. Der eigentliche Aufwand dreht sich eigentlich nur um OnTimer.

Delphi-Quellcode:
type
  TMyTimer = class(TTimer)
  public
    procedure TimerTick(Sender: TObject);
  end;
...
In dem Sinne wollte ich Dir gestern eigentlich antworten, hatte das dann aber verworfen weil ich meinte, Du suchst eine andere Lösung (ohne TTimer).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Timer in einer Unit

  Alt 20. Mär 2015, 16:04
In dem Sinne wollte ich Dir gestern eigentlich antworten, hatte das dann aber verworfen weil ich meinte, Du suchst eine andere Lösung (ohne TTimer).
Eigentlich suche ich auch eine Lösung ohne TTimer. Der Grund ist aber weniger eine Abneigung gegen den TTimer, als die Frage ob Komponenten, selbst wenn sie nicht sichtbar sind, in einer reinen Unit etwas zu suchen haben?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Timer in einer Unit

  Alt 20. Mär 2015, 16:20
In dem Sinne wollte ich Dir gestern eigentlich antworten, hatte das dann aber verworfen weil ich meinte, Du suchst eine andere Lösung (ohne TTimer).
Eigentlich suche ich auch eine Lösung ohne TTimer. Der Grund ist aber weniger eine Abneigung gegen den TTimer, als die Frage ob Komponenten, selbst wenn sie nicht sichtbar sind, in einer reinen Unit etwas zu suchen haben?
Warum vermischst du dann TTimer mit TMMTime?
Die API Lösung basiert auf MMSystem (TMMTime)

gruss

Geändert von EWeiss (20. Mär 2015 um 16:29 Uhr)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: Timer in einer Unit

  Alt 20. Mär 2015, 16:30
Der Grund ist aber weniger eine Abneigung gegen den TTimer, als die Frage ob Komponenten, selbst wenn sie nicht sichtbar sind, in einer reinen Unit etwas zu suchen haben?
Eine Komponente ist doch auch nur eine stink normale Klasse, wie z.B. TStringList, welcher die zusätzliche Möglichkeit gegeben wurde auf der Form platziert zu werden, damit sie automatisch erstellt wird und man Werte im OI beabeiten kann.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Timer in einer Unit

  Alt 20. Mär 2015, 16:34
@BadenPower

Ist schon klar. Man kann aber auch die Verandatür öffnen und sein Auto im Wohnzimmer parken. Gehen tut es, womit die Parkplatzprobleme vorbei wären, man fragt sich aber trotzdem stets ob es die feine saubere Art ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.751 Beiträge
 
Delphi 12 Athens
 
#6

AW: Timer in einer Unit

  Alt 20. Mär 2015, 16:51
Eigentlich würde ich lieber ein OOP-Turorial empfehlen, aber hier mal in Kurz, mit Kommentaren.
Delphi-Quellcode:
type
  TMyTimer = class(TTimer)
  protected
    procedure DoOnTimer; override;
  public
    constructor Create(Owner: TComponent); override;
    //procedure TimerTick(Sender: TObject); // wenn man schon vererbung benutzt, dann doch bitte richtig -> DoOnTimer
  end;

var
  MyTimer: TMyTimer; // OK, da mach ich noch mit, aber natürlich nur in Implementation deklariert, aber eigentlich als private Class-Var in die Klasse
  //a: Integer = 0; // warum ist das global, wo es doch nur im Timer benutzt wird?

//procedure TMyTimer.TimerTick(Sender: TObject);
procedure TMyTimer.DoOnTimer;
begin
  Tag := Tag + 1; //Inc(FCount); // privates Feld "FCount: Integer" mit Property oder das Entwicklerproperty "Tag"
  inherited;
end;

constructor TMyTimerCreate(Owner: TComponent);
begin
  inherited;
  Interval := 1000;
end;

//procedure MyTimerCreate;
//begin
// MyTimer := TMyTimer.Create(nil); // alleine in Prozedur, also sinnlos hier
// with MyTimer do
// begin
// Interval := 1000; // nja, 1000 ist zwar auch default, aber wenn es sein muß, dann wenigstens in den Constructor
// Enabled := True; // es ist per Default immer Enabled
// OnTimer := TimerTick; // sinnlos
// end;
//end;

//procedure MyTimerFree;
//begin
// MyTimer.Free;
//end;

initialization
  //MyTimerCreate;
  MyTimer := TMyTimer.Create(nil);

finalization
  MyTimer.Free; //MyTimerFree;

end.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Mär 2015 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Timer in einer Unit

  Alt 20. Mär 2015, 17:06
@himitsu

Danke für die Kommentare, nur...

das war kein Auszug aus der fertigen Unit, es war nur ein Test. Mehr nicht. Nur ein Test.

Es ist toll, dass du eine Klasse konstruiert hast, nur wozu? Welchen Sinn hat das was du gemacht hast? Was soll ich damit? Was soll ich damit anfangen? Wenn ich eine Klasse brauche, dann nehme ich gleich die TTime Komponente. Letztendlich hast du einen Apfel genommen, ein Herzchen draufgeklebt, und das Ergebnis ist ein Apfel.

Bevor du also unnötige Verbesserungsvorschläge machst, frag lieber ob das die Frage ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.751 Beiträge
 
Delphi 12 Athens
 
#8

AW: Timer in einer Unit

  Alt 20. Mär 2015, 17:14
Die Klasse hattest du auch schon, nur so, wie der Code war, hätte man TTimer nicht ableiten müssen, da praktisch alle Funktion außerhalb lag.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Mär 2015 um 17:28 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 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