Hallo Leute,
ich hab jetzt sehr lange herumgesucht und auch einige Foreneinträge gefunden, die mich etwas weitergebracht haben.
Jedoch führte keines meiner Experimente zu dem Ergebnis, welches ich im Sinn hatte.
Dabei sieht die Problemstellung für mich doch recht banal aus...
Ich möchte eine Altersberechnung durchführen. Dazu benutze ich 3 Comboboxen.
cbbDay
cbbMonth
cbbYear
Die eigentliche Altersberechnung führe ich hiermit durch:
https://www.delphipraxis.net/146593-...errechnen.html
Ich möchte mit einbauen, dass je nachdem welcher Monat in cbbMonth ausgewählt wird, die monatsspezifische Anzahl an Tagen in cbbDay geladen wird.
Das klappt auch für alle Monate. Bloß nicht für den Februar.
Mein Versuch:
Delphi-Quellcode:
var
days: Cardinal;
begin
...
days := DaysInMonth(StrToDate(cbbYear.Text + '.02'));
...
end;
Vorausgesetzt ich wähle 2020 in cbbYear, bringt er mir den Fehler
Code:
2020.02 ist kein gültiges Datum
Das seh ich auch ein.
Aber ich weiß einfach nicht wie ich das nun lösen soll.
Kompletter Code der Prozedur:
Delphi-Quellcode:
procedure TForm1.cbbMonthClick(Sender: TObject);
var
i: Integer;
days: Cardinal;
begin
if cbbMonth.ItemIndex >= 0 then
begin
cbbDay.Enabled := True;
if cbbMonth.ItemIndex in [0, 2, 4, 6, 7, 9, 11] then // Monate mit 31 Tagen
begin
for i := 1 to 31 do // Füge 31 Items(Tage) der cbbDay hinzu
begin
cbbDay.Items.Add(IntToStr(i));
end;
end
else
begin // alle anderen Monate
if cbbMonth.ItemIndex = 1 then // Für Monat Februar
begin
days := DaysInMonth(StrToDate(cbbYear.Text + '.02'));
for i := 1 to days do // Füge die jahrespezifische Tagesanzahl für Februar hinzu
begin
cbbDay.Items.Add(IntToStr(i));
end
end
else
begin
for i := 1 to 30 do // Monate mit 30 Tagen
begin
cbbDay.Items.Add(IntToStr(i));
end;
end;
end;
end
else
begin
cbbDay.Enabled := False;
end;
end;
Wie gesagt, ich denke die Lösung ist einfach, da mir auch die
OH sagt, dass ich doch nur den Monat in TDateTime eingeben soll.
Ich weiß aber nicht, wie das aussehen soll.
Ich hoffe ihr könnt mir weiterhelfen.
VG Kratos