Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#8

AW: CompareDate gibt immer 1 aus...

  Alt 25. Mai 2015, 23:00
Aber hier:
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;
end;
Das Ergebnis bleibt immer 1.
Das Ergebnis wovon genau? CompareDate? DaysBetween? Und warum rufst du CompareDate doppelt auf?

Zitat:
Und eine Meldung lautet:
[Warnung] Unit1.pas(94): W1035 Rückgabewert der Funktion 'TForm1.Tagedazwischen' könnte undefiniert sein

Warum?
Weil du zwei if-Bedingungen stehen hast und Result jeweils von der Erfüllung selbiger abhängt. Die Warnung mag zwar für die menschliche Logik nicht zutreffen, aber das weiß der Compiler ja nicht.

Zitat:
Aufgerufewn wird die Funktion hier:
Delphi-Quellcode:
procedure TForm1.Zeitraum(dt:TDate);
var
  vorTag:TDate;
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));
Mach mal eine Ersetzung der Variablen mit deinen Eingabedaten auf Papier (oder im Editor) und überlege, was jeweils bei den Funktionen rauskommt und vergleiche das mit deinen Erwartungen. Kann man auch im Debugger machen, wenn man will.

MfG Dalai
  Mit Zitat antworten Zitat