Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Geburtstag Erinnerer tage eingeben (https://www.delphipraxis.net/156327-geburtstag-erinnerer-tage-eingeben.html)

Marcoo 28. Nov 2010 11:59

Geburtstag Erinnerer tage eingeben
 
Hallo also das programm an dem ich grad arbeite ist ein Geburtstags errinerer und da muss man ja logischer weise den tag des geburtstags eintragen ich hab das nur halb hingekriegt also es geht aber nur 1 mal also kann ich den 28.11.2010 eintragen aber am 28.11.2011 wird er mich nicht errinert

Delphi-Quellcode:
var
  jahr, monat, tag: Word;
begin
  DecodeDate(Date, jahr, monat, tag);
  DatePicker.Date := Date;
  DatePicker.Calendar.MinDate := Date;
  DatePicker.Calendar.MaxDate := Date + 365;
und die tage bis zu dem im datepicker angegeben tag berechnet er mit
Delphi-Quellcode:
AdvSmoothListBox1.Items[i].Notes := inttostr
(DaysBetween(strtodate(AdvSmoothListBox1.Items[i].Info), now))
+ ' Tage noch';

Marcoo 28. Nov 2010 12:12

AW: Geburtstag Erinnerer tage eingeben
 
Ok ist erledigt hab ne Lösung gefunden nicht die beste aber besser als gar nichts und zwar mach ich dann einfach
in dem moment wo der geburtstag ist flgendes
Delphi-Quellcode:
advsmoothlistbox1.items[i].Info:=datetostr(Date + 365);

DeddyH 28. Nov 2010 12:13

AW: Geburtstag Erinnerer tage eingeben
 
Du musst beim Geburtsdatum das Jahr außer Acht lassen. Man könnte also beispielsweise so vorgehen:
- aktuelles Datum dekodieren
- Geburtsdatum dekodieren
- ist der aktuelle Monat größer als der Geburtsmonat, ist der nächste Geburtstag im Folgejahr
- ist der aktuelle Monat gleich dem Geburtsmonat, Tage vergleichen
- ist der aktuelle Monat kleiner als der Geburtsmonat, ist der nächste Geburtstag in diesem Jahr
Du hast nun also das Jahr des nächsten Geburtstages ermittelt. Nun kannst Du den nächsten Geburtstag wieder kodieren und mit DaysBetween die Anzahl der Tage ermitteln.

Matze 28. Nov 2010 12:27

AW: Geburtstag Erinnerer tage eingeben
 
Zitat:

Zitat von Marcoo (Beitrag 1064607)
Ok ist erledigt hab ne Lösung gefunden nicht die beste aber besser als gar nichts und zwar mach ich dann einfach
in dem moment wo der geburtstag ist flgendes
Delphi-Quellcode:
advsmoothlistbox1.items[i].Info:=datetostr(Date + 365);

Nur so zur Info: ca. alle 4 Jahre ist ein Schaltjahr, das 366 Tage hat.

Hansa 28. Nov 2010 12:47

AW: Geburtstag Erinnerer tage eingeben
 
Deshalb gibt es auch die Funktion "IsLeapYear". 8-)

Wolfgang Mix 28. Nov 2010 12:49

AW: Geburtstag Erinnerer tage eingeben
 
Die Unit DateUtils von Delphi oder die Unit DateUtils2 aus der CodeLib könnte weiterhelfen :-)

Luckie 28. Nov 2010 13:05

AW: Geburtstag Erinnerer tage eingeben
 
Zitat:

Zitat von Matze (Beitrag 1064609)
Nur so zur Info: ca. alle 4 Jahre ist ein Schaltjahr, das 366 Tage hat.

Und Satzzeichen darf man auch in nicht Schaltjahren benutzen. ;)

Hansa 28. Nov 2010 13:27

AW: Geburtstag Erinnerer tage eingeben
 
Zitat:

Zitat von Luckie (Beitrag 1064618)
Und Satzzeichen darf man auch in nicht Schaltjahren benutzen. ;)

Die Gross/Kleinschreibung ist auch wichtig. Bei solchen Fällen empfehle ich immer Linux, um das zu lernen. 8-) :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 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