Função no Delphi: Verifica a Propriedade do Arquivo
Função feita no Delphi 7
function TForm1.VerificaPropriedadeArquivo(Arquivo,Propriedade: String): String;
const
InfoNum = 10;
InfoStr : Array[1..InfoNum] of String =
('CompanyName', 'FileDescription', 'FileVersion', 'InternalName',
'LegalCopyright', 'LegalTradeMarks', 'OriginalFilename',
'ProductName', 'ProductVersion', 'Comments');
var
fCompanyName : String;
fFileDescription : String;
fFileVersion : String;
fInternalName : String;
fLegalCopyright : String;
fLegalTradeMark : String;
fOriginalFileName : String;
fProductName : String;
fProductVersion : String;
fComments : String;
S : String;
Len : Cardinal;
n : Cardinal;
Buf : PChar;
Value : PChar;
begin
S := Arquivo;
n := GetFileVersionInfoSize(PChar(S), n);
if n > 0 then begin
Buf := AllocMem(n);
try
GetFileVersionInfo(PChar(S), 0, n, Buf);
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[1]), Pointer(Value), Len) then
fCompanyName := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[2]), Pointer(Value), Len) then
fFileDescription := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[3]), Pointer(Value), Len) then
fFileVersion := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[4]), Pointer(Value), Len) then
fInternalName := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[5]), Pointer(Value), Len) then
fLegalCopyright := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[6]), Pointer(Value), Len) then
fLegalTradeMark := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[7]), Pointer(Value), Len) then
fOriginalFileName := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[8]), Pointer(Value), Len) then
fProductName := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[9]), Pointer(Value), Len) then
fProductVersion := Value;
if VerQueryValue(Buf, PChar('StringFileInfo\041604E4\' +
InfoStr[10]), Pointer(Value), Len) then
fComments := Value;
finally
FreeMem(Buf, n);
end;
end
else begin
fCompanyName := '';
fFileDescription := '';
fFileVersion := '';
fInternalName := '';
fLegalCopyright := '';
fLegalTradeMark := '';
fOriginalFileName := '';
fProductName := '';
fProductVersion := '';
fComments := '';
end;
result := '?????';
if Propriedade = 'CompanyName' then result := fCompanyName;
if Propriedade = 'FileDescription' then result := fFileDescription;
if Propriedade = 'FileVersion' then result := fFileVersion;
if Propriedade = 'InternalName' then result := fInternalName;
if Propriedade = 'LegalCopyright' then result := fLegalCopyright;
if Propriedade = 'LegalTradeMarks' then result := fLegalTradeMark;
if Propriedade = 'OriginalFilename' then result := fOriginalFileName;
if Propriedade = 'ProductName' then result := fProductName;
if Propriedade = 'ProductVersion' then result := fProductVersion;
if Propriedade = 'Comments' then result := fComments;
end;