Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FileAge unter Win7 und XP (https://www.delphipraxis.net/158661-fileage-unter-win7-und-xp.html)

OsCor 25. Feb 2011 14:11

Delphi-Version: 2007

FileAge unter Win7 und XP
 
Hallo Foristen,

zum Zwecke der Versionsaktualisierung benutze ich (die überladene Version von) FileAge:
Delphi-Quellcode:
var
    VDTW, VDTWAlt : TDateTime;
begin
    FileAge('P:\D1\Protokolle\DTW\DTWV2PR.exe', VDTW);
    FileAge('P:\D1\Protokolle\DTWAlt\DTWV2PR.exe', VDTWAlt);
Unter Win7 zeigen die Editfelder für alle Datumsangaben den 1.1.2000 an, unter XP den korrekten Zeitpunkt mit Uhrzeit.

Da ich unter Win7 entwickle, die User XP nutzen, ist die Arbeit mühsam.
Was passiert denn da?

Oswald

OsCor 8. Mär 2011 11:36

AW: FileAge unter Win7 und XP
 
Nachdem bisher niemand mit meinem Problem was anfangen konnte, habe ich mal einen Test durchgeführt:

Parallel werden FileAge und FileGetAttributesEx verwendet:

Delphi-Quellcode:
var
  Form1: TForm1;
  fn : String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
    fa, d : TDateTime;
begin
    FileAge(fn, fa);
    Edit1.Text := DateTimeToStr(fa);
    d := aenderung(fn);
    Edit3.Text := FormatDateTime('dd.mm.yyyy hh:nn:ss', d);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    fn := 'P:\XXX\YYY\DTW\DTWV2PR.exe';
end;

function TForm1._FileTimeToDateTime(ft: _FileTime): TDateTime;
var
    lft: _FileTime;
    dt: DWord;
begin
    FileTimeToLocalFileTime(ft, lft);
    FileTimeToDosDateTime(lft, LongRec(dt).Hi, LongRec(dt).Lo);
    Result := FileDateToDateTime(dt);
end;

function TForm1.aenderung(Datei: String): TDateTime;
var
    WAD: _WIN32_FILE_ATTRIBUTE_DATA;
begin
    GetFileAttributesEx(PChar(Datei), GetFileExInfoStandard, @WAD);
    Result := _FileTimeToDateTime(WAD.ftLastWriteTime);
end;
Leider wird in beiden Fällen unter Win 7 der 1.1.2000 als Datum ausgegeben (unter XP ist alles korrekt). Kann jetzt jemand was dazu sagen?

Oswald


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz