![]() |
aus Ini datei ein Datum und eine Zeit auslesen
Guten Abend Leute.
Nach einer Zeit des Versuchs wende ich mich wieder an euch. Ich habe jetzt eine Überschrift (EdUber), eine Beschreibung (Edmem), eine Zeit die ich mit Timepicker erstllt habe (pickerzeit.time) und ein Datum dass ich auch mit datepicker erstellt hab (pickerdatum.date) also so:
Delphi-Quellcode:
WriteToIni (Filename,'Myvars','Überschrift',eduber.Text);
WriteToIni (Filename,'Myvars','Beschreibung',edmem.Text); WriteToIni (Filename,'Myvars','Zeit',TimeToStr(pickerzeit.Time)); WriteToIni (Filename,'Myvars','Datum',DateToStr(pickerdatum.date)); Wenn ich jetzt zum TTimer sagen will: Wenn die Das Datum und die Zeit in der ini-datei mit (NOW) - also JETZT - übereinstimmen, dann Mach GERÄUSCH und zeige mir ein Hinweisfenster mit der Überschrift und der Beschreibung. Bisher habe ich das geschafft
Delphi-Quellcode:
Aber wie mache ich es, dass er die Daten in der Ini-Datei abfragt und dort als Hinweisfenster die Überschrift und die dazugehörige Beschreibung nimmt?If (TimeToStr(now) = TImeToStr(pickerzeit.Time)) and (DateToStr(now) = DateToStr(pickerdatum.Date) ) then showmessage ('Aufwachen') ; |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Hallo,
du kannst TDateTime-Werte direkt miteinander vergleichen ohne sie davor in einen String umzuwandeln. Wie man aus einer Ini-Datei liest, ist dir geläufig. Das Anzeigen kannst du mit "Application.MessageBox()" machen ( ![]() Grüße, Matze |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Zitat:
Was ist falsch daran, wenn ich diese in einen String umwandel? |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Es ist nichts falsch daran. Aber so geht es auch:
Delphi-Quellcode:
if Pickerdatum.date+Pickerzeit.time=now then ...
|
Re: aus Ini datei ein Datum und eine Zeit auslesen
Hi,
beides ist nicht optimal. Die Umwandlung von tDateTime in einen String verhindert an dieser Stelle Rundungsprobleme, dennoch muss die Prüfung zur genau richtigen Sekunde erfolgen. Sollte das Programm noch andere Dinge tun, könnte das auch schonmal evtl. ne Sekunde später sein.... und dann ? Ich würde auf einen Bereich von z.B. 10 Sekunden oder einer Minute testen. Und in dem Fall eignet sich dann der direkte tDateTime Datentyp besser. Gruss [Edit] Oder geht es erst mal darum, die Werte wieder aus der Ini-Datei zu lesen ? Soll eventuell mehr als eine "Weckzeit" überprüft werden ? [/Edit] |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Es kann ruhig einige Sekunden verspätet auftreten! Das ist absolut kein Problem. Ich bleibe lieber bei den Strings, weil ich dort verstehe was vor sich ging.
Zitat:
Mit der Messagebox habe ich es versucht. Aber es zeigt mir Fehler bei diesem Befehl:
Delphi-Quellcode:
If (TimeToStr(now) = TImeToStr(pickerzeit.Time)) and (DateToStr(now) = DateToStr(pickerdatum.Date) ) then Messagebox(Self.Handle, readfromini(filename, 'Myvars', 'Beschreibung'), readfromini (filename, 'Myvars', 'Überschrift'), MB_ICONWARNING or MB_OK); |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Ich würde nicht auf gleich prüfen, auch nicht auf eine Toleranz sondern prüfen ob das Datum/Zeit in der Ini kleiner als das aktuelle ist und kleiner dem des letzten auslösens. Den Zeitpunkt des letzten Auslösens musst du nicht mitspeichern sondern kannst es bei Programmstart auf now setzen.
Der Zeitanteil von TDateTime (Now) ist übrigens der Nachkommaanteil. Diesen solltest du mit Floor ermitteln können. Der Datumsteil eines TDateTime ist der Teil vor dem Komma und kann mit Trunc ermittelt werden.
Delphi-Quellcode:
gesamt := now();
zeit := floor(gesamt); datum := trunc(gesamt); |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Zitat:
Ich schätze du meintest Frac() ;-D |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Zitat:
Aber ich denke, dass es nach meiner Methode auch klappt. Wenn ich die "Überschrift" des Nachrichtenfensters von der Ini-Datei ablese und auch die dazugehörige "Beschreibung" und diese dann als Messagebox ausgeben kann (vielleicht noch später einen Weckersound hinzu oder sowas :mrgreen: ) dann wäre 50% der Arbeit erledigt. Die anderen 50% wären dann nur noch zu schauen ob die Zeit und das Datum einer (welche ich mit DateTimePicker erstellt habe und auch in die Ini-datei gespeichert hab ;) ) mit NOW übereinstimmen. Wenn ja soll dann meine Messagebox mit dem Sound aktiviert werden. |
Re: aus Ini datei ein Datum und eine Zeit auslesen
Zitat:
Delphi-Quellcode:
if Now >= Datumpicker.date + Zeitpicker.time then ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 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 by Thomas Breitkreuz