Ok, dann mal ins Detail:
Die alte Funktion hat dir die TFileTime als Result zurück gegeben. Das Result (TFileTime) ist ein Fliesskommawert und somit birgt dies Probleme, weil was geschieht, wenn die Datei nicht gefunden wird? Dann wird ein definierter Rückgabewert zurück gegeben und auf den müsste der Aufrufer testen. Da wir aber alle wissen, ist ein Vergleich von Fliesskommawerten mit gewissen Problemen gebunden, die durch die Darstellung der Fliesskommazahlen im digitalen System einhergeht. Und da die wenigsten den Rückgabewert mit SameValue() vergleichen sondern lieber direkt, birgt dies eine grosse Gefahrenquelle.
Abhilfe hat CodeGear dadurch geschaffen, dass sie den Rückgabewert auf Boolean geändert haben und die FileTime als Argument zurück geben. Damit kann der Aufrufer eindeutig erkennen, ob die Dateizeit ermittelt werden konnte. Und dadurch ist die zurück gegebene Zeit auch immer nur dann gültig, wenn die Funktion true zurück gibt. Damit entfällt der Fliesskommavergleich komplett und es ist sicher geworden.
Zitat von
Klaus01:
Delphi-Quellcode:
var
Testdatum : TDateTime;
If FileDateToDateTime(FileAge(Serverpfad + SearchRec.name,TestDatum)) < (Date - 60) then
begin
DeleteFile();
end;
Ui, ein Boolean mit einer Zeit vergleichen? Und wozu dann noch die Variable?
Hier nochmal richtig:
Delphi-Quellcode:
var
Testdatum : TDateTime;
If FileAge(Serverpfad + SearchRec.name, TestDatum) and
( FileDateToDateTime(Testdatum ) < (Date - 60) ) then
begin
DeleteFile();
end;
@DeddyH: Sorry, aber ich mach das zu gerne...