Obter Informações sobre arquivo
13/05/2003
0
Gostaria de Saber se o delphi tem alguma função que retorna a ultima modificação feita em um arquivo.
Se alguem puder me ajudar, Valeu!!!!!!!!
Falou!!
Se alguem puder me ajudar, Valeu!!!!!!!!
Falou!!
Handerson
Curtir tópico
+ 0
Responder
Posts
13/05/2003
Okama
Var StrLst : TStringList; begin StrLst := TStringList.Create; FileVerInfo(Application.ExeName,StrLst); RichEditSobre.Lines := StrLst;
function FileVerInfo(const FileName: string;var FileInfo: TStringList): Boolean; // // Obtem diversas informações de um arquivo executável // // Requer um StringList criado antes de executar a função // deve ser declarado na clausula Var no inicio da Unit // StrLst := TStringList.Create; // // const Key: array[1..9] of string =(´CompanyName´, ´FileDescription´, ´FileVersion´, ´InternalName´, ´LegalCopyright´, ´OriginalFilename´, ´ProductName´, ´ProductVersion´, ´Comments´); KeyBr: array [1..9] of string = (´Empresa............´, ´Descricao..........´, ´Versao do Arquivo..´, ´Nome Interno.......´, ´Copyright..........´, ´Nome Original......´, ´Produto............´, ´Versao do Produto..´, ´Comentarios........´); var Dummy : THandle; BufferSize, Len : Integer; Buffer : PChar; LoCharSet, HiCharSet : Word; Translate, Return : Pointer; StrFileInfo, Flags : string; TargetOS, TypeArq : string; FixedFileInfo : Pointer; i : Byte; begin Result := False; If not FileExists(FileName) then begin showmessage(´Arquivo não encontrado´); Result := False; exit; end; BufferSize := GetFileVersionInfoSize(PChar(FileName), Dummy); if BufferSize <> 0 then begin GetMem(Buffer, Succ(BufferSize)); try if GetFileVersionInfo(PChar(FileName), 0, BufferSize,Buffer) then begin if VerQueryValue(Buffer, ´\VarFileInfo\Translation´, Translate, UINT(Len)) then begin LoCharSet := LoWord(Longint(Translate^)); HiCharSet := HiWord(Longint(Translate^)); for i := 1 to 9 do begin StrFileInfo := Format(´\StringFileInfo\0¬x0¬x\¬s´,[LoCharSet, HiCharSet, Key[i]]); if VerQueryValue(Buffer,PChar(StrFileInfo), Return,UINT(Len)) then begin FileInfo.Add(KeyBr[i] + ´: ´ + PChar(Return)); end; end; if VerQueryValue(Buffer,´\´,FixedFileInfo, UINT(Len)) then with TVSFixedFileInfo(FixedFileInfo^) do begin Flags := ´´; if (dwFileFlags and VS_FF_DEBUG) = VS_FF_DEBUG then begin Flags := Concat(Flags,´*Debug* ´); end; if (dwFileFlags and VS_FF_SPECIALBUILD) = VS_FF_SPECIALBUILD then begin Flags := Concat(Flags, ´*Special Build* ´); end; if (dwFileFlags and VS_FF_PRIVATEBUILD) = VS_FF_PRIVATEBUILD then begin Flags := Concat(Flags, ´*Private Build* ´); end; if (dwFileFlags and VS_FF_PRERELEASE) = VS_FF_PRERELEASE then begin Flags := Concat(Flags, ´*Pre-Release Build* ´); end; if (dwFileFlags and VS_FF_PATCHED) = VS_FF_PATCHED then begin Flags := Concat(Flags, ´*Patched* ´); end; if Flags <> ´´ then begin FileInfo.Add(´Atributos: ´ + Flags); end; TargetOS := ´Plataforma (OS)....: ´; case dwFileOS of VOS_UNKNOWN : TargetOS := Concat(TargetOS, ´Desconhecido´); VOS_DOS : TargetOS := Concat(TargetOS, ´MS-DOS´); VOS_OS216 : TargetOS := Concat(TargetOS, ´16-bit OS/2´); VOS_OS232 : TargetOS := Concat(TargetOS, ´32-bit OS/2´); VOS_NT : TargetOS := Concat(TargetOS, ´Windows NT´); VOS_NT_WINDOWS32, 4: TargetOS := Concat(TargetOS, ´Win32 API´); VOS_DOS_WINDOWS16: TargetOS := Concat(TargetOS, ´16-bit Windows ´,´sob MS-DOS´); else TargetOS := Concat(TargetOS, ´Fora do Padrão. Código: ´, IntToStr(dwFileOS)); end; FileInfo.Add(TargetOS); TypeArq := ´Tipo de Arquivo....: ´; case dwFileType of VFT_UNKNOWN : TypeArq := Concat(TypeArq,´Desconhecido´); VFT_APP : TypeArq := Concat(TypeArq,´Aplicacao´); VFT_DLL : TypeArq := Concat(TypeArq,´Dynamic-Link Lib.´); VFT_DRV : begin TypeArq := Concat(TypeArq,´Device driver - Driver ´); case dwFileSubtype of VFT2_UNKNOWN : TypeArq := Concat(TypeArq,´Desconhecido´); VFT2_DRV_PRINTER : TypeArq := Concat(TypeArq,´de Impressao´); VFT2_DRV_KEYBOARD : TypeArq := Concat(TypeArq,´de Teclado´); VFT2_DRV_LANGUAGE : TypeArq := Concat(TypeArq,´de Idioma´); VFT2_DRV_DISPLAY : TypeArq := Concat(TypeArq,´de Vídeo´); VFT2_DRV_MOUSE : TypeArq := Concat(TypeArq,´de Mouse´); VFT2_DRV_NETWORK : TypeArq := Concat(TypeArq,´de Rede´); VFT2_DRV_SYSTEM : TypeArq := Concat(TypeArq,´de Sistema´); VFT2_DRV_INSTALLABLE : TypeArq := Concat(TypeArq,´Instalavel´); VFT2_DRV_SOUND : TypeArq := Concat(TypeArq,´Multimida´); end; end; VFT_FONT : begin TypeArq := Concat(TypeArq,´Fonte - Fonte ´); case dwFileSubtype of VFT2_UNKNOWN : TypeArq := Concat(TypeArq, ´Desconhecida´); VFT2_FONT_RASTER : TypeArq := Concat(TypeArq,´Raster´); VFT2_FONT_VECTOR : TypeArq := Concat(TypeArq,´Vetorial´); VFT2_FONT_TRUETYPE : TypeArq := Concat(TypeArq,´TrueType´); end; end; VFT_VXD : TypeArq := Concat(TypeArq,´Virtual Device´); VFT_STATIC_LIB: TypeArq := Concat(TypeArq,´Static-Link Lib.´); end; FileInfo.Add(TypeArq); end; end; end; finally FreeMem(Buffer, Succ(BufferSize)); Result := FileInfo.Text <> ´´; end; end; end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)