AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Mehrere Zeitabfragen im Timer, wie?

Ein Thema von Codix32 · begonnen am 30. Aug 2014 · letzter Beitrag vom 12. Sep 2014
Antwort Antwort
Seite 1 von 2  1 2   
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#1

Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 18:03
Delphi-Version: 2005
Hallo,

kann man in einem Timer mehrere Zeitabgleiche machen?

Nehmen wir an ich habe eine Listbox mit mehreren Items:

13:50 Blabla
13:50 Herd ausschalten
13:52 Text
14:00 Text
15:33 Text
16:10 usw

Ist zum Beispiel 13:50 erreicht, soll eine Meldung erscheinen.
Wenn ich Items in ein dynamisches Array einlese, kann ich im Timer die Zeiten in einer Schleife abfragen?
Oder gibt es eine Alternative zur Timer Komponenten?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 18:24
Du kannst durch die Listbox durchsteppen mit Listbox.items[x]. Anzahl mit items.count.
Vielleicht hilft das.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 18:42
Ich verstehe hier das Problem nicht so wirklich muss ich gestehen. Um die konkrete Frage zu beantworten: Ja, man kann natürlich im Timer-Event auch eine Schleife nutzen. Das hätte man aber auch ausprobieren können. Ich vermute hier aber eigentlich eine andere Fragestellung, nur leider fehlt diese und wir müssten raten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#4

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 19:10
Ich verstehe hier das Problem nicht so wirklich muss ich gestehen. Um die konkrete Frage zu beantworten: Ja, man kann natürlich im Timer-Event auch eine Schleife nutzen. Das hätte man aber auch ausprobieren können. Ich vermute hier aber eigentlich eine andere Fragestellung, nur leider fehlt diese und wir müssten raten.
In etwa so:
Delphi-Quellcode:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  aTime,bTime: TDateTime;
  str:string;
begin
 aTime := Time;

 {Timerintervall ist 1000 Kann ich hier die gesamten Intems in einer Sekunde durchgehen?}
 for i := 0 to (Listbox1.count-1) do
   begin
     bTime:= TrimLeft(copy(Listbox1.Items[i],1,8)); //<- (13:50:00 Blabla)
     If aTime >= bTime then
       begin
         inc(iFlag); //<- global
           if iFlag = 1 then
           begin
            Label4.Caption:= Listbox1.items[i];
            iFlag:=0;
           end;
       end;
   end;
end;
Gibt es da keinen besseren Ansatz?
  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: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 19:30
Ja es gibt einen besseren Ansatz.
  • Benutze die Listbox ausschliesslich zur Anzeige
  • Merke die einzelnen Zeitpunkte in einer Liste
  • Mit dieser Liste kannst du die Anzeige für die Listbox füttern
  • Gehe durch die Liste und prüfe ob ein Zeitpunkt <= der aktuellen Uhrzeit ist und die letzte Signalisierung < der aktuellen Zeit (Datum+Zeit)
Wegen der Zeitdauer (geht das innerhalb einer Sekunde) brauchst du dir eigentlich keine Sorgen machen (wenn du zwischendurch nicht noch die Quadratur des Kreises berechnen willst).
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
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 19:31
Delphi-Referenz durchsuchenStrToTime?
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#7

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 19:46
Ja es gibt einen besseren Ansatz.
  • Benutze die Listbox ausschliesslich zur Anzeige
  • Merke die einzelnen Zeitpunkte in einer Liste
  • Mit dieser Liste kannst du die Anzeige für die Listbox füttern
  • Gehe durch die Liste und prüfe ob ein Zeitpunkt <= der aktuellen Uhrzeit ist und die letzte Signalisierung < der aktuellen Zeit (Datum+Zeit)
Wegen der Zeitdauer (geht das innerhalb einer Sekunde) brauchst du dir eigentlich keine Sorgen machen (wenn du zwischendurch nicht noch die Quadratur des Kreises berechnen willst).
Ich grüße Dich Sir Rufo,

Also das Formular soll nach dem Start in der Taskleiste liegen.
Wenn in der Liste zum Beispiel '13:00 Putin wegen zu hohem Gaspreis anrufen' steht, soll ein Fenster oder eine MessageBox um 13:00 Uhr auf dem Desktop erscheinen und diese Meldung oder wenn es mehrere 13:00 Ereignisse gibt, diese anzeigen.
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#8

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 19:56
Ok:
   bTime:= StrtoTime(TrimLeft(copy(Listbox1.Items[i],1,8))); //<- (13:50:00 Blabla)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#9

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 20:10
Wenn du alle aktuellen Ereignisse abgearbeitet hast, dann könntest du auch einfach prüfen, wann das nächste Ereignis eintritt und das Timerintervall entsprechend setzen.

Gruß
Olli
  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
 
#10

AW: Mehrere Zeitabfragen im Timer, wie?

  Alt 30. Aug 2014, 20:11
Ich grüße Dich Sir Rufo,

Also das Formular soll nach dem Start in der Taskleiste liegen.
Wenn in der Liste zum Beispiel '13:00 Putin wegen zu hohem Gaspreis anrufen' steht, soll ein Fenster oder eine MessageBox um 13:00 Uhr auf dem Desktop erscheinen und diese Meldung oder wenn es mehrere 13:00 Ereignisse gibt, diese anzeigen.
Öhm ja, mach doch einfach, es sollte nur den Timer nicht blockieren.
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
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz