Zitat von
thiagojonas:
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:
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;
Funktioniert irgendwie nicht ganz.
Wenn das augewählte Datum 1995, dann wir der Tabsheet nicht auf false gesetzt
Woran liegt das?
Ich frage mich, warum Du das Datum und die Zeit erst in einen String verwandelst. Beim Hin- und Herwandeln wird wohl eine Rundungsungenauigkeit eintreten. TDateTime ist vom Typ Double, Du hast aber Extended verwendet.
Du kannst doch direkt damit rechnen:
Delphi-Quellcode:
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;
So sollte es klappen.
Gruß
Michael