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
Seite 1 von 2  1 2      
Popov
(Gast)

n/a Beiträge
 
#1

AW: Timer in einer Unit

  Alt 20. Mär 2015, 18:20
@himitsu

Ich will dich nicht dafür kritisieren, weil du etwas richtig machen willst, aber das ist ein Programmiererforum. Warum muss der Code optimiert sein? Kann doch jeder selbst machen. Wenn einer nicht weiß wie er A und B in einer Klasse addieren kann, dann schreibe ich in einer Button1Click Prozedur wie man A und B addiert, denn das ist wohl das Problem. Ich packe das nicht in eine Klasse, denn ich gehe davon aus, dass der Fragesteller weiß wie man eine Klasse schreibt. Ich konzentriere mich auf das Problem.

Die Beispiele oben beschreiben mögliche Lösungen des Problems, in Einzelteile zerlegt. Der eine Block beschreibt das eine Teil, der andere ein anderes. Wer wissen will wie man Klassen programmieren kann, der kann fragen wie man Klassen programmieren kann. Wer wissen will wie man das Beispiel eleganter programmieren kann, den kann danach fragen.


@Dejan Vu

Das was ich vorhabe ist etwas komplexer. Mich interessiert es nicht wirklich wie man mit Inc a erhöhen kann. Vielmehr ist es so, dass ich beim Aufruf einer Prozedur eine weitere für eine bestimmte Zeit getaktet starten will. Womit letztendlich mein erstes Beispiel im Post #1 der optimale wäre, denn da muss ich keine Objekte erzeugen oder freigeben, sondern nur den Timer starten und stoppen. Ist für eine Unit optimaler. Trotzdem habe ich auch andere Möglichkeiten geprüft (und die Ergebnisse gepostet falls einer eine ähnliche Frage hat).


@jaenicke

Ok, danke. Das mit der Komponente und Formular war etwas was ich zwar immer gemacht habe, aber stets nach anderen Möglichkeiten gesucht habe.

Geändert von Popov (20. Mär 2015 um 18:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Timer in einer Unit

  Alt 20. Mär 2015, 23:35
Vielleicht nicht optimiert, aber wenigstens "aufgeräumt"?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Timer in einer Unit

  Alt 21. Mär 2015, 00:38
Du erinnerst mich etwas an ein HTML-Forum für Anfänger, in dem ich früher (so vor 10 Jahren) gelegentlich war. Regelmäßig wie das Amen in der Kirche kam dort ein Newbie vorbei der sich an einer Webseite versuchte und etwas in zwei Spalten schreiben wollte. Die simple Lösung die damals üblich war und selbst von wichtigen Portale noch genutzt wurde war die Tabelle. Man nehme einen Tabellen-Tag, einen Zeilen-Tag und zwei Spalten-Tags. Fertig.

Dafür muss man nichts lernen. Das sagt man dem Newbie, zeigt es ihm und er ist glücklich. Der will ja nichts groß lernen, er will eine Webseite mit Infos erstellen. Aber wehe einer kam mit der Tabellenlösung an.

Denn da gab es die Experten, und für die war die Tabellenlösung keine Lösung. Um etwas in zwei Spalten zu schreiben muß man erst CSS lernen - das war deren Antwort auf die Frage. Ohne CSS geht es nicht.

Da gab es dauerhaft Diskussionen. Ich weiß nicht ob je einer der Newbie seine Webseite vollendet hat oder gar extra wegen der zwei Spalten CSS gelernt hat. Aber das war in dem Forum nie wirklich wichtig. Wichtig war, dass man für Spalten CSS drauf haben sollte.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Timer in einer Unit

  Alt 21. Mär 2015, 06:27
Und wer ist hier bei deinem Vergleich hier der Newbie?

Ein Programmierforum ist sehr wohl und zuallererst dazu da, Code nicht nur zu zeigen, sondern auch zu optimieren. Natürlich soll man die TE nicht überfordern, und insofern wäre ein echter Newbie bestimmt überfordert. Nun zähle ich dich aber nicht so direkt zu den, die froh sind, überhaupt die Compile-Funktion entdeckt zu haben.

Wenn Du in 2015 in einem Bauforum das Bohren eines Lochen in einer Wand damit demonstrierst, indem Du eine Lehmwand hochziehst, darf man schon darauf hinweisen, das es auch andere, bessererere Baustoffe gibt. Vor allen Dingen, weil bei einer dermaßen fundamentalen Frage auch Interessierte vorbeischauen, die neben den einfachen Tipps auch Optimierungen zu sehen bekommen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Timer in einer Unit

  Alt 21. Mär 2015, 09:26
Hier mal ein Minimalst-Beispiel, was auch komplett auf ein Handle verzichtet
Delphi-Quellcode:
unit Unit1;

interface

uses
  {Winapi.}Windows;

// Startet den Timer oder
// setzt ein neues Intervall für einen aktiven Timer
procedure TimerStart( Interval: UINT );
// Stoppt den Timer
procedure TimerStop;

implementation

var
  nIDEvent: UINT_PTR = 0; // Beim Start kein Timer, also nIDEvent = 0

procedure OnTimer;
begin
  // hier irgendwas machen
end;

procedure TimerStop;
begin
  if KillTimer( 0, nIDEvent )
  then
    nIDEvent := 0; // Wenn der Timer entfernt werden konnte, dann nIDEvent wieder auf 0 setzen
end;

procedure TimerStart( Interval: UINT );
begin
  nIDEvent := SetTimer( 0, nIDEvent, Interval, @OnTimer );
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#6

AW: Timer in einer Unit

  Alt 21. Mär 2015, 13:39
Hi.hi..


Nur ne kleine Anmerkung:

SetTimer( 0, nIDEvent, Interval, @OnTimer );

benötigt eine nIDEvent > 0 !!

Also hier einfach

SetTimer( 0, 1, Interval, @OnTimer );

Da mit dieser Minimalroutine eh nur ein Teimer erzeugt werden kann

Hier mal ein Minimalst-Beispiel, was auch komplett auf ein Handle verzichtet
Delphi-Quellcode:
unit Unit1;

interface

uses
  {Winapi.}Windows;

// Startet den Timer oder
// setzt ein neues Intervall für einen aktiven Timer
procedure TimerStart( Interval: UINT );
// Stoppt den Timer
procedure TimerStop;

implementation

var
  nIDEvent: UINT_PTR = 0; // Beim Start kein Timer, also nIDEvent = 0

procedure OnTimer;
begin
  // hier irgendwas machen
end;

procedure TimerStop;
begin
  if KillTimer( 0, nIDEvent )
  then
    nIDEvent := 0; // Wenn der Timer entfernt werden konnte, dann nIDEvent wieder auf 0 setzen
end;

procedure TimerStart( Interval: UINT );
begin
  nIDEvent := SetTimer( 0, nIDEvent, Interval, @OnTimer );
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Timer in einer Unit

  Alt 21. Mär 2015, 16:20
Hi.hi..


Nur ne kleine Anmerkung:

SetTimer( 0, nIDEvent, Interval, @OnTimer );

benötigt eine nIDEvent > 0 !!
Könntest du das einmal erläutern, warum. Dann können wir das bei MS einreichen, auf dass die ihre Doku anpassen, denn die wäre dann ja wohl falsch.

Evtl. liegt es auch daran, dass ich es mir angewöhnt habe den gesamten Abschnitt der Dokumentation zu lesen und nicht nur das erste Schlagwort.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Timer in einer Unit

  Alt 22. Mär 2015, 07:32
aber der Event wird nur 1x ausgelöst, d.h. es handelt sich nicht um einen periodischen Timer (den man aber sehr leicht anhand des Codes erstellen kann)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Timer in einer Unit

  Alt 22. Mär 2015, 07:35
aber der Event wird nur 1x ausgelöst, d.h. es handelt sich nicht um einen periodischen Timer (den man aber sehr leicht anhand des Codes erstellen kann)
Wo wie was wann wird da nur einmal etwas ausgelöst? Der Timer, wenn erfolgreich gesetzt, löst nach jedem Intervall aus bis es den Timer nicht mehr gibt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
BadenPower

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

AW: Timer in einer Unit

  Alt 22. Mär 2015, 11:24
aber der Event wird nur 1x ausgelöst, d.h. es handelt sich nicht um einen periodischen Timer (den man aber sehr leicht anhand des Codes erstellen kann)
Einmal abgesehen davon, dass die Aussage falsch ist, hätte man dennoch als Antwort die Code-Änderung posten können, welche dann die angebliche richtige Lösung enthalten würde.

So ist es halt nur wieder das übliche BlaBla.
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
Antwort Antwort
Seite 1 von 2  1 2      


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:20 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