Autor Beitrag
Herr Bananerama
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 08.02.08 21:17 
Hi,
Ich arbeite gerade an einer SegmentUhr Komponente die ich von TGraphicControl ableite. Nun weiß ich nur nich wie ich erreichen kann das jede Sekunde die Uhrzeit angezeigt wir. Ich möchte nämlich nicht besonders gerne einen TTimer benutzen da dieser sehr viel Speicher verbraucht. Gibt es eine gute möglichkeit wie ich das anstellen kann?
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Fr 08.02.08 21:21 

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 08.02.08 22:27 
Ein Timer braucht "sehr viel Speicher"?!
Ich weiß nicht, ob man in Zeiten, wo 1 GB RAM Standard sind, noch auf jedes KB achten muss?
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 08.02.08 22:51 
user profile iconXentar hat folgendes geschrieben:
Ein Timer braucht "sehr viel Speicher"?!
Ich weiß nicht, ob man in Zeiten, wo 1 GB RAM Standard sind, noch auf jedes KB achten muss?


Hmmm ja soll aber ne Komponente werden und deswegen wollte ich so wenig speicher wie möglich verbrauchen. Außerdem würd ich dann wieder was dazu lernen ;).
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 09.02.08 15:25 
Eine weitere Möglichkeit, die mir noch eingefallen ist:

Du kannst dafür einen eigenen TThread aufmachen, den du immer für eine Sekunde schlafen legst.
Aber das wär wohl für diesen Anwendungsfall schon mit Kanonen auf Spatzen.. außerdem ist das mehr Aufwand bzgl. Synchronisierung, und du musst dafür sorgen, dass der Thread / die Anwendung sauber beendet wird.

Das einfachste wäre wohl wirklich ein Timer ;)
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 09.02.08 15:32 
Jup... TThread verbrät noch mehr Speicher.

Wenn es dir allerdings so drauf ankommt, verzichte auf die VCL und erstelle dir deinen Timer per WinAPI. Brauchst dann allerdings auch noch ein Dummy-Fenster (->HandleNeeded), was die WM_TIMER empfangen kann.

Oder den Thread per BeginThread.

Ist auf jeden Fall Resourcenschonender, auch wenn ich nicht glaube dass der Aufwand gerechtfertigt ist. Außer du willst das auf einer Embedded-Plattform mit sehr wenig RAM laufen lassen. Dann könnte es sich durchaus lohnen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Sa 09.02.08 17:06 
user profile iconMartok hat folgendes geschrieben:
Jup... TThread verbrät noch mehr Speicher.

Wenn es dir allerdings so drauf ankommt, verzichte auf die VCL und erstelle dir deinen Timer per WinAPI. Brauchst dann allerdings auch noch ein Dummy-Fenster (->HandleNeeded), was die WM_TIMER empfangen kann.

Oder den Thread per BeginThread.

Ist auf jeden Fall Resourcenschonender, auch wenn ich nicht glaube dass der Aufwand gerechtfertigt ist. Außer du willst das auf einer Embedded-Plattform mit sehr wenig RAM laufen lassen. Dann könnte es sich durchaus lohnen.


Das ist eine gute Idee ich werd es mal versuchen. Ich weiß, das der Speicher vom Timer keine trivialen Auswirkungen auf die Geschwindigkeit haben wird, aber ich finds immer besser wenn man alles auch selbst irgendwie herstellen könnte. Und deswegen wollt ich mal ausprobieren wie man einen Timer immitieren könnte.

Ich denke dafür habe ich jetzt einige Beispiele bekommen und das letzte werde ich wohl oder übel in meinem Programm verwenden.

Danke für die Tipps.