Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Version einer Datei auslesen

  Alt 5. Sep 2004, 11:39
hallo

ich bin mal ein wenig durch das i-net gesurft und hab folgenden Code gefunden zum auslesen der Versions-Nr. einer Datei:

Code:
function GetBuildInfo(const AFilename:String; var V1,V2,V3,V4:Word):Boolean;
var
   VerInfoSize : Integer;
   VerValueSize : DWord;
   Dummy       : DWord;
   VerInfo     : Pointer;
   VerValue    : PVSFixedFileInfo;
begin
  VerInfoSize:=GetFileVersionInfoSize(PChar(AFilename),Dummy);
  Result:=False;
  if VerInfoSize<>0 then begin
    GetMem(VerInfo,VerInfoSize);
    try
      if GetFileVersionInfo(PChar(AFilename),0,VerInfoSize,VerInfo) then begin
        if VerQueryValue(VerInfo,'\',Pointer(VerValue),VerValueSize) then
         with VerValue^ do begin
          V1:=dwFileVersionMS shr 16;
          V2:=dwFileVersionMS and $FFFF;
          V3:=dwFileVersionLS shr 16;
          V4:=dwFileVersionLS and $FFFF;
        end;
        Result:=True;
      end;
    finally
      FreeMem(VerInfo,VerInfoSize);
    end;
  end;
end;
ich hab den dann wie folgt umgeändert und als ausgabe nen String gebaut:

Code:
function GetFileVersion(const AFilename:String): String;
var
   VerInfoSize : Integer;
   VerValueSize : DWord;
   Dummy       : DWord;
   VerInfo     : Pointer;
   VerValue    : PVSFixedFileInfo;
begin
  VerInfoSize:=GetFileVersionInfoSize(PChar(AFilename),Dummy);
  Result := '';

  If VerInfoSize <> 0 then
    begin
      GetMem(VerInfo,VerInfoSize);
      try
        If GetFileVersionInfo(PChar(AFilename), 0, VerInfoSize,VerInfo) then
          begin
            If VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize) then
             with VerValue^ do
              begin
                Result := Result + IntToStr(dwFileVersionMS shr 16) + '.';
                Result := Result + IntToStr(dwFileVersionMS and $FFFF) + '.';
                Result := Result + IntToStr(dwFileVersionLS shr 16) + '.';
                Result := Result + IntToStr(dwFileVersionLS and $FFFF);
              end;
          end;
      finally
      FreeMem(VerInfo,VerInfoSize);
    end;
  end;
end;
mfg
Helmi
  Mit Zitat antworten Zitat