Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Version einer Datei auslesen (https://www.delphipraxis.net/29143-version-einer-datei-auslesen.html)

Helmi 4. Sep 2004 14:35


Version einer Datei auslesen
 
Hallo,

ich hätt mal wieder eine Frage:

Wie kann ich die Version einer Datei auslesen?


mfg
Helmi

sakura 4. Sep 2004 14:36

Re: Version einer Datei auslesen
 
Was für einen Dateitypen meinst Du? Txt-Dateien haben zum Beispiel iA keine solche Infos.

...:cat:...

Dax 4. Sep 2004 14:37

Re: Version einer Datei auslesen
 
Mit MSDN-Library durchsuchenGetFileVersionInfo.

Im MSDN dürfte dazu genug stehen.

Helmi 4. Sep 2004 14:42

Re: Version einer Datei auslesen
 
ich will das unabhängig von dem Dateityp auslesen

wenn nix vorhanden ist, dann soll der String einfach leer sein...

SleepyMaster 4. Sep 2004 15:41

Re: Version einer Datei auslesen
 
Das wirst du sehr wahrscheinlich nicht schffen. Es gibt keinen Standard der sagt: "In jeder Datei muss an Addresse XYZ die Versionsnummer stehen". Eine exe-Datei hat die Versionsnummer woandersstehen als z.B.: eine Flash Datei (falls die überhaupt Versionsnummern haben). Eine txt Datei, hat keine Versionsnummer, da das was man im Texteditor sieht alles ist was in der Datei steht (mal abgesehen von den Steuerzeichen).

Sharky 4. Sep 2004 15:45

Re: Version einer Datei auslesen
 
Zitat:

Zitat von SleepyMaster
... Eine txt Datei, hat keine Versionsnummer, ....

Ab NT (NTFS) kann ich bei jeder Datei auch einen Versionsstring angeben. Klicke mal auf die Eigenschaften einer Datei und schaue dann bei "DateiInfo". Ich denke diese Information möchte Helmi auslesen.

Helmi 4. Sep 2004 15:45

Re: Version einer Datei auslesen
 
also würde es nur sinn machen von einer Exe-Datei die Version auszulesen oder?

und wie geht das?

SleepyMaster 4. Sep 2004 16:00

Re: Version einer Datei auslesen
 
MSDN-Library durchsuchenGetFileVersionInfoSize
MSDN-Library durchsuchenGetFileVersionInfo
MSDN-Library durchsuchenVerQueryValue

SleepyMaster 4. Sep 2004 16:08

Re: Version einer Datei auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mal ein kleines Beispiel. Musste aber feststellen, dass nur die wenigsten exen die Versionsinfo wirklich einbinden.

Helmi 5. Sep 2004 11:39

Re: Version einer Datei auslesen
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz