![]() |
Delphi-Version: 2005
Mehrere Zeitabfragen im Timer, wie?
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? |
AW: Mehrere Zeitabfragen im Timer, wie?
Du kannst durch die Listbox durchsteppen mit Listbox.items[x]. Anzahl mit items.count.
Vielleicht hilft das. |
AW: Mehrere Zeitabfragen im Timer, wie?
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.
|
AW: Mehrere Zeitabfragen im Timer, wie?
Zitat:
Delphi-Quellcode:
Gibt es da keinen besseren Ansatz?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; |
AW: Mehrere Zeitabfragen im Timer, wie?
Ja es gibt einen besseren Ansatz.
|
AW: Mehrere Zeitabfragen im Timer, wie?
![]() |
AW: Mehrere Zeitabfragen im Timer, wie?
Zitat:
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. |
AW: Mehrere Zeitabfragen im Timer, wie?
Zitat:
Delphi-Quellcode:
bTime:= StrtoTime(TrimLeft(copy(Listbox1.Items[i],1,8))); //<- (13:50:00 Blabla)
|
AW: Mehrere Zeitabfragen im Timer, wie?
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 |
AW: Mehrere Zeitabfragen im Timer, wie?
Zitat:
|
AW: Mehrere Zeitabfragen im Timer, wie?
Zitat:
Das geht auch besser mit einem Memo:
Delphi-Quellcode:
//Aufrufen, wenn ListBox1 geändert oder gefüllt wird
procedure TForm2.Button1Click(Sender: TObject); begin Memo1.Lines:= ListBox1.Items; end; procedure TForm2.Timer1Timer(Sender: TObject); var myTime : TDateTime; formatted : string; begin myTime:= now; DateTimeToString(formatted, 't', myTime); if formatted<>Label1.caption then Label1.Caption:= formatted else Exit; //wird nur 1x/Minute ausgeführt beim Minutenwechsel if POS(Label1.caption,Memo1.Text)<>0 then WinApi.Windows.Beep(1500,50); // oder weiter mit procedure AUSWERTUNG... end; |
AW: Mehrere Zeitabfragen im Timer, wie?
Hallo,
leider schon etwas spät aber ich dachte mir meine Idee könnte trotzdem mal weiterhelfen: An deiner Stelle würde ich die Liste welche du speicherst / erstellst mit den verschiedenen Aufgaben und deren Zeiten auswerten und den Timer (Tick Event) auf die Zeit bzw. den Zeitabstand zum nächsten Event setzen und wenn dies "getickt" hat wieder das selbe für das nächst anstehende "Event /Aufgabe". Und wenn man diese Liste anpasst oder ändert musst du das natürlich prüfen ob sich die aktuelle Zeitspanne zum nächsten Event geändert hat und dann ggf. die Zeit von Timer anpassen. Soweit meine Idee - ich hoffe ich habe dein Problem richtig erkannt und liege mit meinem Vorschlag nicht komplett daneben :cyclops: Beste Grüße, Niclas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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