Récupérer la date et l'heure d'édition d'un fichier

Pour mon programme concernant l'analyse d'un programme Panoramic (voir ici), j'ai eu besoin de connaitre la date et l'heure de modification d'un fichier. Comme il n'existe pas de commande panoramic pour réaliser cela, j'ai fait une petite DLL qui contient juste cette fonction.

Déclaration et appel sous Panoramic:

' -------------------------------------------------------------------------------
' Exemple: pour connaitre la date de la dernière édition du fichier exemple.bas
' -------------------------------------------------------------------------------
dim Fichier$, DateFichier$,DateLength%,retourDLL%

Fichier$ = "exemple.bas" : ' nom du fichier à tester
DateFichier$ = string$(25," ") : ' on réserve de la place pour que la dll puisse écrire la date
DateLength% = len(DateFichier$) : ' on indique la place réservée

dll_on "DateFile.dll"
retourDLL% = dll_call3("DateFichier", adr(Fichier$), adr(DateFichier$), DateLength%)
dll_off

message "La date du fichier "+Fichier$+" est :"+DateFichier$
end
Résultat:
La date du fichier exemple.bas est : 04/06/2011 05:55:24

La Dll compilée se trouve ici : datefile.dll

Source en Delphi :

(Comme je ne maitrise pas Delphi, les commentaires pour améliorer le source sont les bienvenus. smil_01)

library DateFile;

uses
  SysUtils,
  Windows,
  StrUtils,
  Forms,
  Dialogs,
  Classes;

{$R *.res}

function DateFichier(AdrFileName,AdrStrRetour,LongStrRetour:integer):integer;stdcall;
var
  pstr:pstring;
  FileName: widestring;
  FileDate: integer;
  myDate: TDateTime;
  DateStr:string;
  PtrSrc:pchar;
  PtrDest:pbyte;
  i,longTransfert:integer;

begin
  // on récupère le nom du fichier
  pstr := pstring(AdrFileName);  FileName := pstr^;
  FileDate := FileAge(FileName); // puis sa date
  myDate := FileDateToDateTime(FileDate); // on converti la date dans un autre format
  DateStr := FormatDateTime('c',myDate);
  PtrDest := Pbyte(pstring(AdrStrRetour)^);
  longTransfert := length(DateStr);
  if longTransfert > LongStrRetour then longTransfert:=LongStrRetour;
  for i:=1 to longTransfert do begin
    PtrSrc :=pchar(midstr(DateStr,i,1));
    PtrDest^ := Byte(PtrSrc^);
    inc(PtrDest);
  end;
  result:=0
end;

exports
  DateFichier;
begin
end.

Merci à Klaus et DJ Peters !!!