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