Zitat:
Warum?
Formatiere mal den Quelltext ordentlich und dann sieht du es bestimmt.
[edit]
Delphi-Quellcode:
function TForm1.TageDazwischen(vor, nach: TDate): Integer;
begin
if CompareDate(vor, nach) >= 0 then
Result := DaysBetween(vor, nach)
else
if CompareDate(vor, nach) < 0 then
Result := -1
{else
Result := ???};
end;
Delphi-Quellcode:
function TForm1.TageDazwischen(vor, nach: TDate): Integer;
begin
if CompareDate(vor, nach) >= 0 then
Result := DaysBetween(vor, nach)
else
//if CompareDate(vor, nach) < 0 then // Oder das weglassen, da eh sinnlos, aber das weiß der Compiler ja nicht.
Result := -1;
end;
Ich stehe auf dem Schlauch. Das geht auch nicht:
Delphi-Quellcode:
function TForm1.Tagedazwischen(vor, nach:TDate):Integer;
begin
if compareDate(vor,nach) >= 0 then
Result:= daysbetween(vor,nach)
Else
//if compareDate(vor,nach) < 0 then Result := -1;
Result := -1;
end;
Es bleibt 1, auch wenn das erste Datum größer als das 2. ist.
Result := -1 wird nicht ausgegeben.
Die Fehlermeldung ist allerdings weg.
Normalerweise wird die Procedure Zeitraum(date), in der die Function liegt im OnCreate der Form aufgerufen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderIcons := [biSystemmenu];
Statusbar1.panels[0].text:='Datum: '+ DatetoStr(Date);
Statusbar1.panels[1].text:='Woche: '+ InttoStr(WeekOf(Date));
Zeitraum(Date); //<- Enthält die Function Tagedazwischen
fuelleLabels;
end;
Hier die Procedure:
Delphi-Quellcode:
procedure TForm1.Zeitraum(dt:TDate);
var
vorTag:TDate; //<- 1 Tag vor der 1. Tablette
begin
Gauge1.Progress:=0; Gauge2.Progress:=0;Gauge3.Progress:=0;
vorTag:= strtoDate('17.04.2015');
if wievieltePackung(Tagedazwischen(dt, vorTag)) >= 1 then
Gauge1.Progress:= round(100 / 28 * Tagedazwischen(dt, vorTag));
if wievieltePackung(daysbetween(dt, vorTag)) >= 2 then
Gauge2.Progress:= round(100 / 28 * Tagedazwischen(dt, vorTag+incday(27)));
if wievieltePackung(daysbetween(dt, vorTag)) > 2 then
Gauge3.Progress:= round(100 / 28 * Tagedazwischen(dt, vorTag+incDay(55)));
Gauge4.Progress:= round(100 / 84 * Tagedazwischen(dt, vorTag));
if Tagedazwischen(dt, vortag) <= 84 then
Label14.caption:= ' Tabletten genommen: ' + inttostr(Tagedazwischen(dt, vortag))+ '/84'
else
Label14.caption:= ' Tabletten genommen: 84/84';
Label15.Caption:= inttostr(compareDate(dt, vortag));
end;