Hallo.
Es ist bei einer solchen Aufgabe immer vorteilhaft, wenn man Darstellung und Funktionalität weitgehend voneinander entkoppelt:
Delphi-Quellcode:
function CreateRandomList(dtLow, dtHigh: TDate;
rndLow, rndHigh: Integer): TStringList;
var
i: Integer;
begin
Result := TStringList.Create;
for i := Trunc(dtLow) to Trunc(dtHigh) do
Result.Add(Format('%s %d', [DateToStr(i), rndLow + Random(rndHigh - rndLow)]));
end;
Die Prüfungen kann man dann in einer kapselnden Funktion unterbringen:
Delphi-Quellcode:
function CheckCreateRandomList(dtLow, dtHigh: TDate;
rndLow, rndHigh: Integer): TStringList;
var
dt: TDateTime;
i: integer;
begin
if dtLow > dtHigh then
begin
dt := dtLow;
dtLow := dtHigh;
dtHigh := dt;
end;
if rndLow > rndHigh then
begin
i := rndLow;
rndLow := rndHigh;
rndHigh := i;
end;
Result := CreateRandomList(dtLow, dtHigh, rndLow, rndHigh);
end;
Die gezeigte Kapsel soll aber nur das Prinzip verdeutlichen. Im konkreten Beispiel gehört der Prüf-Code wohl eher zur Benutzerschnittstelle. Eine so enge Kopplung zwischen dem Prüfen der Argumente und dem Ausführen der Funktion ist nicht immer gewünscht. Fehlt eigentlich nur noch der Test-Code.
Grüße vom marabu