Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Versionnummer des Programm auslesen? (https://www.delphipraxis.net/10836-versionnummer-des-programm-auslesen.html)

Alexander 26. Okt 2003 13:31


Versionnummer des Programm auslesen?
 
Hi Leute,
man kann ja unter dem Menüpunkt Projekt -> Optionen die Versionummer auslesen.
Ich frage mich nur gerade wie man diese wieder auslesen kann, damit ich sie wo auch immer anzeigen kann :gruebel:
Also ich irgendwie sowas wie Application.Version oder Application.Productversion oder so.
Wie mache ich das?
DAnke schon mal :D

FriFra 26. Okt 2003 13:35

Re: Versionnummer des Programm auslesen?
 
Versuch es mal damit ;)
Delphi-Quellcode:
function GetVersion: string;
var
  VerInfoSize: DWord;
  VerInfo: Pointer;
  VerValueSize: DWord;
  VerValue: PVSFixedFileInfo;
  Dummy: DWord;
begin
  VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
  GetMem(VerInfo, VerInfoSize);
  GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
  VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
  with VerValue^ do
  begin
    result := IntTostr(dwFileVersionMS shr 16);
    result := result + '.' + IntTostr(dwFileVersionMS and $FFFF);
    result := result + '.' + IntTostr(dwFileVersionLS shr 16);
    result := result + '.' + IntTostr(dwFileVersionLS and $FFFF);
  end;
  FreeMem(VerInfo, VerInfoSize);
end;

MathiasSimmack 26. Okt 2003 13:35

Re: Versionnummer des Programm auslesen?
 
Irgendwann mal ... äh ... geliehen von Luckie (glaube ich):
Delphi-Quellcode:
unit FileVer;

interface

function GetFileVersionsString(const p_sFilepath : string) : string;


implementation

uses
  Windows, SysUtils;

const
  sFixVerFormat = ' %d.%d.%d.%d';

function GetFileVersionsString(const p_sFilepath : string) : string;
var
  dwVersionSize  : DWord;           // Buffer für die Grösse der Versionsinfo der abgefragten Datei
  dwDummy        : DWord;           // Dummy, Wert wird nicht benötigt
  pVerBuf        : Pointer;         // Buffer für die Versionsdaten
  pFixBuf        : PVSFixedFileInfo; // Buffer für die Versionsinfo fester Länge
  sReqdInfo      : string;          // Hier kommt rein, welcher Teil der Versionsinfo abgefragt werden soll
begin
  // Annahme: Die Datei hat keine Versionsinfo
  Result       := '';

  dwDummy      := 0;  // Dummy initialisieren
  sReqdInfo    := '\'; // Es soll die Versionsinfo fester Länge abgefragt werden

  // Mal sehen, wieviel Platz die Versionsinfo der Datei braucht
  dwVersionSize := GetFileVersionInfoSize(PChar(p_sFilepath),dwDummy);
  if dwVersionSize > 0 then begin // Wenn > 0, dann Versionsinfo vorhanden
    GetMem(pVerBuf,dwVersionSize);
    try
      fillchar(pVerBuf^,dwVersionSize,0);

      // Gesamte Versionsinformationen auslesen
      if GetFileVersionInfo(PChar(p_sFilepath),0,dwVersionSize,pVerBuf) then
        begin // Werte für Versionsinfo fester Länge extrahieren
          if VerQueryValue(pVerBuf,PChar(sReqdInfo),Pointer(pFixBuf),dwDummy) then
            begin
              // und als Ergebnis ausgeben
              Result := Format(sFixVerFormat,
                [(pFixBuf^.dwFileVersionMS and $FFFF0000) shr 16,
                 pFixBuf^.dwFileVersionMS and $0000FFFF,
                 (pFixBuf^.dwFileVersionLS and $FFFF0000) shr 16,
                 pFixBuf^.dwFileVersionLS and $0000FFFF]);
        end;
      end;
    finally // Resourcen wieder freigeben
      FreeMem(pVerBuf,dwVersionSize);
    end;
  end;
end;

end.
Ins Projekt einbinden, und bspw. so aufrufen:
Delphi-Quellcode:
  MessageBox(self.Handle,
    pchar(self.Caption + GetFileVersionsString(paramstr(0)) + #13#10 +
      INFOABOUT + #13#10#13#10 + LICENSEABOUT + #13#10#13#10 + URLSABOUT),
    pchar(self.Caption),
    MB_OK or MB_ICONINFORMATION);

Alexander 26. Okt 2003 13:36

Re: Versionnummer des Programm auslesen?
 
Danke werde mir beides ankucken ;-)

Alexander 26. Okt 2003 13:46

Re: Versionnummer des Programm auslesen?
 
OK. Beides funktioniert super ;-)
Nur eine Frage noch, wie kann ich mir auch die Build-Nummer anzeigen lassen?

MathiasSimmack 26. Okt 2003 13:53

Re: Versionnummer des Programm auslesen?
 
Wird bei mir angezeigt. Ausprobiert mit Chakotay ihm seinen MovieOrganizer. :)
Da stammt nämlich die "MessageBox" her.

Christian Seehase 26. Okt 2003 14:28

Re: Versionnummer des Programm auslesen?
 
Moin Mathias,

nur falls es Probleme damit gibt: Das sieht so aus als hätte ich es "verbrochen" ;-)

MathiasSimmack 26. Okt 2003 15:08

Re: Versionnummer des Programm auslesen?
 
Also ich kann nicht klagen. Bisher hat´s angezeigt, was es anzeigen sollte. :)

Alexander 26. Okt 2003 17:45

Re: Versionnummer des Programm auslesen?
 
Also irgendwie zeigt er nur eine Vierstellige (jeweils durch 4 Punkte getrennte) Zahl an.
Ist zwar so auch gut.
Allerdings fehlt die Built- oder Compilierungs-Nummer. :sad:
Ich habe es auch leider ncith hinbekommen, wäre toll wenn jemand das wüsste.

Christian Seehase 26. Okt 2003 17:57

Re: Versionnummer des Programm auslesen?
 
Moin Alexander,

Zitat:

Zitat von alexander
Allerdings fehlt die Built- oder Compilierungs-Nummer

Die Buildnummer ist die vierte Stelle.

Möglich, dass Du die tatsächliche Versionsnummer mit dem, ebenfalls möglichen, String verwechselst, der bei manchen Dateien in als Versionsinformation angezeigt wird, und z.T. auch den Text "Build" enthält.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Seite 1 von 2  1 2      

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