Einzelnen Beitrag anzeigen

Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#10

AW: CompareDate gibt immer 1 aus...

  Alt 25. Mai 2015, 23:17
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;
  Mit Zitat antworten Zitat