![]() |
Re: Fileage ist veraltet
Die Suche nach
![]() |
Re: Fileage ist veraltet
Und genau daran hängt es, ich komm einfach nicht darauf.
Für mich sieht die neue Funktion wie die alte aus. Und die 2 Stück habe ich auch schon gesehen aber werde nicht schlau daraus. |
Re: Fileage ist veraltet
Delphi-Quellcode:
var
Testdatum : TDateTime; If (FileAge(Serverpfad + SearchRec.name,TestDatum) and (TestDatum < (Date - 60)) then begin DeleteFile(); end; |
Re: Fileage ist veraltet
Zitat:
|
Re: Fileage ist veraltet
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:
Hier nochmal richtig:
Delphi-Quellcode:
@DeddyH: Sorry, aber ich mach das zu gerne...
var
Testdatum : TDateTime; If FileAge(Serverpfad + SearchRec.name, TestDatum) and ( FileDateToDateTime(Testdatum ) < (Date - 60) ) then begin DeleteFile(); end; |
Re: Fileage ist veraltet
Zitat:
Grüße Klaus |
Re: Fileage ist veraltet
Delphi-Quellcode:
Ahh ok das Datum der Datei wir ins Testdatum übergeben und dadurch verglichen.
var
Testdatum : TDateTime; If FileAge(Serverpfad + SearchRec.name, TestDatum) and ( FileDateToDateTime(Testdatum ) < (Date - 60) ) then begin DeleteFile(); end; Hab ich gemacht, geht net Inkompatible Typen Integer und TDateTime |
Re: Fileage ist veraltet
Ich habe gerade die neue Syntax nicht zur Verfügung, aber müsste Testdatum nicht integer sein?
|
Re: Fileage ist veraltet
Delphi-Quellcode:
Das Problem liegt nicht bei
var
Testdatum : TDateTime; If FileAge(Serverpfad + SearchRec.name, TestDatum) and ( Testdatum < (Date - 60) ) then begin DeleteFile(); end; ![]() ![]() |
Re: Fileage ist veraltet
Danke für die ganzen Anworten jetzt funktioniert es und ich habe es verstanden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz