Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi aus Ini datei ein Datum und eine Zeit auslesen (https://www.delphipraxis.net/145221-aus-ini-datei-ein-datum-und-eine-zeit-auslesen.html)

kingsusu 26. Dez 2009 19:03


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:

If (TimeToStr(now) = TImeToStr(pickerzeit.Time)) and (DateToStr(now) = DateToStr(pickerdatum.Date) )
then showmessage ('Aufwachen') ;
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?

Matze 26. Dez 2009 19:28

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 (Tutorial).

Grüße, Matze

kingsusu 27. Dez 2009 10:56

Re: aus Ini datei ein Datum und eine Zeit auslesen
 
Zitat:

Zitat von Matze
Hallo,

du kannst TDateTime-Werte direkt miteinander vergleichen ohne sie davor in einen String umzuwandeln.

Wie meinst du das? Ich vergleiche ja nicht zwei TDateTime werte miteinander, sondern jeweils das Datum und NOW und dann die Zeit und NOW.

Was ist falsch daran, wenn ich diese in einen String umwandel?

implementation 27. Dez 2009 11:43

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 ...

thkerkmann 27. Dez 2009 11:48

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]

kingsusu 27. Dez 2009 11:59

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:

Zitat von thkerkmann

Oder geht es erst mal darum, die Werte wieder aus der Ini-Datei zu lesen ?
Soll eventuell mehr als eine "Weckzeit" überprüft werden ?

Genau! Das will ich.


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);

SirThornberry 27. Dez 2009 12:04

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);

implementation 27. Dez 2009 12:06

Re: aus Ini datei ein Datum und eine Zeit auslesen
 
Zitat:

Zitat von SirThornberry
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.

Floor() rundet ab. Bei positiven Zahlen kommt also das gleiche raus wie bei Trunc().
Ich schätze du meintest Frac() ;-D

kingsusu 27. Dez 2009 12:17

Re: aus Ini datei ein Datum und eine Zeit auslesen
 
Zitat:

Zitat von SirThornberry
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.

- ohje, ich will das nicht unnötig kompliziert machen :gruebel: .

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.

implementation 27. Dez 2009 12:20

Re: aus Ini datei ein Datum und eine Zeit auslesen
 
Zitat:

Zitat von kingsusu
- ohje, ich will das nicht unnötig kompliziert machen :gruebel: .

Das ist nicht kompliziert.
Delphi-Quellcode:
if Now >= Datumpicker.date + Zeitpicker.time then ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.
Seite 1 von 3  1 23      

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