Pergunta

Eu quero ficar uns arquivos esses atributos como valores inteiros.

Foi útil?

Solução

Delphians tendem a como a abordagem FindFirst (a estrutura SearchRec tem algum desses), mas eu sugiro a função API Win32 GetFileAttributesEx.

Outras dicas

Tente

function FileAge(const FileName: string; out FileDateTime: TDateTime): Boolean;

De SysUtils.

A partir da DSiWin32 biblioteca gratuito:

function DSiFileTimeToDateTime(fileTime: TFileTime; var dateTime: TDateTime): boolean;
var
  sysTime: TSystemTime;
begin
  Result := FileTimeToSystemTime(fileTime, sysTime);
  if Result then
    dateTime := SystemTimeToDateTime(sysTime);
end; { DSiFileTimeToDateTime }

function  DSiGetFileTimes(const fileName: string; var creationTime, lastAccessTime,
  lastModificationTime: TDateTime): boolean; 
var
  fileHandle            : cardinal;
  fsCreationTime        : TFileTime;
  fsLastAccessTime      : TFileTime;
  fsLastModificationTime: TFileTime;
begin
  Result := false;
  fileHandle := CreateFile(PChar(fileName), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, 0, 0);
  if fileHandle <> INVALID_HANDLE_VALUE then try
    Result :=
      GetFileTime(fileHandle, @fsCreationTime, @fsLastAccessTime,
         @fsLastModificationTime) and
      DSiFileTimeToDateTime(fsCreationTime, creationTime) and
      DSiFileTimeToDateTime(fsLastAccessTime, lastAccessTime) and
      DSiFileTimeToDateTime(fsLastModificationTime, lastModificationTime);
  finally
    CloseHandle(fileHandle);
  end;
end; { DSiGetFileTimes }

Isso deve funcionar, e é de código Delphi nativa.

function GetFileModDate(filename : string) : integer;
var
  F : TSearchRec;
begin
  FindFirst(filename,faAnyFile,F);
  Result := F.Time;
  //if you wanted a TDateTime, change the return type and use this line:
  //Result := FileDateToDatetime(F.Time);
  FindClose(F);
end;
function GetFileModDate(filename : string) : TDateTime;
var
   F : TSearchRec;
begin
   FindFirst(filename,faAnyFile,F);
   Result := F.TimeStamp;
   //if you really wanted an Int, change the return type and use this line:
   //Result := F.Time;
   FindClose(F);
end;

F.Time desde então tem sido preterido, arquivo de Ajuda diz Use F.TimeStamp.
Só para atualizar esta devido a versões posteriores do Delphi

Você poderia chamar o href="http://msdn.microsoft.com/en-us/library/aa364952.aspx" rel="nofollow noreferrer"> GetFileInformationByHandle função JCL tem uma função GetFileLastWrite você também pode usar

System.IOUtils têm um registro tfile com várias funções para obter idade do arquivo, por exemplo, GetCreationTime, GetLastAccessTime, GetLastWriteTime

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top