![]() |
Alter berechnen!
Hallo,
ich habe da mal wieder ein kleines problem... Ich habe eine DateTimePicker und zwei variablen datum:string; datum := DateToStr(Now); time:string; time := DateToStr(DateTimePicker.Date); Ich möchte jetzt sozusagen datum - time berechnen und dann das "alter" anzeigen lassen, z.B. über ShowMessage. Wie folgt bin ich vorgegangen.
Delphi-Quellcode:
Funktioniert irgendwie nicht ganz.
procedure TForm7.datum_dateChange(Sender: TObject);
var alter:extended; begin time := DateToStr(datum_date.Date); alter := StrToDate(datum) - StrToDate(time); if (alter) >= 18 then begin Tabsheet4.TabVisible := true; end else if (alter) < 18 then begin Tabsheet4.TabVisible := false; end; end; Wenn das augewählte Datum 1995, dann wir der Tabsheet nicht auf false gesetzt :gruebel: Woran liegt das? |
Re: Alter berechnen!
Hallo...
probier mal folgendes:
Delphi-Quellcode:
...weglassen, wenn das Programm in den else Zweig läuft ist alter eh < 18
if (alter) < 18 then
aus...
Delphi-Quellcode:
machst du mal...
if (alter) >= 18 then
Delphi-Quellcode:
:hi:
if alter >= 18 then
|
Re: Alter berechnen!
Hmm... habe ich gemacht, geht aber nicht.
Liegt das vielleicht am OnChange des TimeDatePickers? |
Re: Alter berechnen!
Zitat:
Du kannst doch direkt damit rechnen:
Delphi-Quellcode:
So sollte es klappen.
procedure TForm7.datum_dateChange(Sender: TObject);
var alter: TDateTime; begin alter := now - datum_date.Date; if alter >= 18 then Tabsheet4.TabVisible := true else Tabsheet4.TabVisible := false; end; Gruß Michael |
Re: Alter berechnen!
nimm mal einen anderen Variablennamen für time.
...könnte mit dem reserviertem Wort Time verwechselt werden. Und dann stimmt deine Berechnung nicht. |
Re: Alter berechnen!
Hallo,
bei TDateTime-Werten gibt die Zahl vor dem Komma die Tage und nicht die Jahre an. Hast du dir schon einmal die Unit DateUtils und deren Routinen angesehen? Gruß Hawkeye |
Re: Alter berechnen!
Stimmt, mal nachgebessert :stupid: :angel2:
Zitat:
|
Re: Alter berechnen!
Ich habe mir das jetzt mal anzeigen lassen. Das Problem ist, dass wenn ich ich z.B. den 4.11.1990 aus wähle, dann zeigt Delphi mir über Showmessage den 4.11.1917 an. Woran liegt das?
|
Re: Alter berechnen!
Zitat:
|
Re: Alter berechnen!
showmessage(datetostr(alter));
|
Re: Alter berechnen!
alter ist ja die Differenz aus Heute und gewähltem Datum (in Tagen oder /365 in Jahren)...und das wieder in ein Datum zurück ab dem Datum Nullpunkt ( :oops: hab ich vergessen :? ) ergibt dann manche lustige Kombination.
der Nullpunkt wäre showmessage(datetostr(0))...laß es dir mal anzeigen. |
Re: Alter berechnen!
Zitat:
Mein Vorredner war schneller. Heute 4.11.2008 - 4.11.1990 sind 18 Jahre. Ab dem 31.12.1899 (der Nullpunkt) wäre es dann der 4.11.1917. |
Re: Alter berechnen!
Zitat:
|
Re: Alter berechnen!
Zitat:
|
Re: Alter berechnen!
Aber warum willst Du Dir eigentlich die Differenz als Datum anzeigen lassen? :gruebel:
Mach doch einfach ShowMessage(FloatToStr(alter)), dann siehst Du doch die Jahre. |
Re: Alter berechnen!
ok...vom Anfang
Zitat:
das Date ist eine Zahl entsprechend der Differenz vom 31.12.1899 zu dem gewähltem Datum. Darum kannst du auch mit Datumswerten rechnen. Mit "10.10.2007 - 09.09.2009" würde das nämlich nicht funktionieren. d.h. der Computer speichert ein Datum immer als Differenz zum "Nullpunkt" |
Re: Alter berechnen!
Okay habe ich verstanden.
Aber was muss ich den tun, damit ich das Alter berechnen kann? denn 8.12.2008 - 8.12.2008 und ShowMessage(FloatToStr(alter)) kommt bei mir 4 raus. |
Re: Alter berechnen!
Zitat:
|
Re: Alter berechnen!
Zitat:
Damit hast Du dann das Hintergrundwissen, um damit zu rechnen. Zitat:
|
Re: Alter berechnen!
Delphi-Quellcode:
Alter := YearsBetween(Geburtsdatum, Now);
|
Re: Alter berechnen!
...ist doch viel zu leicht :wink:
...man soll doch etwas lernen :thumb: |
Re: Alter berechnen!
Zitat:
|
Re: Alter berechnen!
Zitat:
|
Re: Alter berechnen!
Ahh... Super klasse :cheers:
also für alle die das gleiche Problem haben :-D
Delphi-Quellcode:
uses DateUtils...
procedure TForm7.datum_dateChange(Sender: TObject); var alter: extended; begin alter := YearsBetween(datum_date.Date, Now); if alter >= 18 then begin Tabsheet4.TabVisible := true end else if alter < 18 then Tabsheet4.TabVisible := false; end; |
Re: Alter berechnen!
Delphi-Quellcode:
...ist im else Zweig immer True...damit kannst du es weglassen.
if alter < 18 then
|
Re: Alter berechnen!
[ot]
Zitat:
statt
Delphi-Quellcode:
if alter >= 18 then
Delphi-Quellcode:
schreiben dann bekommst du nich so nen schock (so wie ich :D ) wenn du mal was mit java zu tuhen haben solltest
if (alter >= 18) then
[/ot] |
Re: Alter berechnen!
Zitat:
Delphi-Quellcode:
In der Kürze liegt die Würze ;)
procedure TForm7.datum_dateChange(Sender: TObject);
Tabsheet4.TabVisible := YearsBetween(datum_date.Date, Now) >= 18; end; |
Re: Alter berechnen!
Sieh dir mal YearsBetween, MonthsBetween und DaysBetween aus der Unit DateUtils an.
[EDIT] Oops ... wo kommt die zweite Seite her??? Hehe ... sorry :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 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