El problema de acceder a la fecha de un fichero de un ejecutable que se está ejecutando, es el mismo que de qualquier archivo abierto edn modo no compartido. No se puede usar ningun código que trarte de abrirlo porque eso no será posible. La solución el cambiar de camino, como apuntaba
[egostar] aquí.
Estas dos opciones pueden servir:
Con FindFirst:
Código Delphi
[-]
function GetFileModifyDate(FileName: string): TDateTime;
var
SearchRec: TSearchRec;
begin
if FindFirst(Filename,faAnyFile,SearchRec) = 0 then
Result:= FileDateToDateTime(SearchRec.Time)
else
Result:= 0;
FindClose(SearchRec);
end;
Con GetFileAttributesEx:
Código Delphi
[-]
function GetModifyFileDate(FileName: String): TDate;
var
FileData: WIN32_FILE_ATTRIBUTE_DATA;
SystemTime: TSYSTEMTIME;
begin
GetFileAttributesEx(PCHAR(FileName), GetFileExInfoStandard, @FileData);
FileTimeToSystemTime(FileData.ftLastWriteTime, SystemTime);
Result:= EncodeDate(SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay);
end;
Saludos.