Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Version zur Laufzeit abfragen. (https://www.delphipraxis.net/45740-version-zur-laufzeit-abfragen.html)

Ca3dEsnox 11. Mai 2005 17:31


Version zur Laufzeit abfragen.
 
Ich will bei meinem Programm die Version in der Titelleiste anzeigen und hab keine Lust bei jeder Änderung der Version diese von hand in der titelleiste zu ändern. Daher meine Frage: Kann man irgendwie die version während das Programm läuft auslesen? Und wie?

Ultimator 11. Mai 2005 17:33

Re: Version zur Laufzeit abfragen.
 
Schreib dir doch ins FormCreate Code, der dir die Caption anhand einer Konstante ändert, die du dann lediglich ändern musst.

Ca3dEsnox 11. Mai 2005 17:38

Re: Version zur Laufzeit abfragen.
 
Da kann ich die Caption auch gleich ändern.
Bei jedem Compilen ändert sich bei mir die Buildnummer und die würde ich gerne direkt abfragen.
Bei VB 6.0 geht das mit App.Build(oder so ähnlich), also muss das doch auch bei Delphi gehen.

alcaeus 11. Mai 2005 17:40

Re: Version zur Laufzeit abfragen.
 
Hallo,

diesen Code hab ich mal irgendwo gefunden (kann sein dass es auch diese CodeLib war)

Delphi-Quellcode:
type
   TIntArray = array of Integer;

function GetProgramVersion(sFileName: String; var Version: TIntArray): Boolean;
//This function retrieves the version number included in an exe file specified
//with sFileName
var
   VerInfoSize: DWORD;
   VerInfo: Pointer;
   VerValueSize: DWORD;
   VerValue: PVSFixedFileInfo;
   Dummy: DWORD;
begin
   Result := True;
   if (not FileExists(sFileName)) or (LowerCase(ExtractFileExt(sFileName)) <> '.exe') then
      exit;
   try
      VerInfoSize := GetFileVersionInfoSize(PChar(sFileName), Dummy);
      GetMem(VerInfo, VerInfoSize);
      GetFileVersionInfo(PChar(sFileName), 0, VerInfoSize, VerInfo);
      VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
      SetLength(Version, 4);
      with VerValue^ do
      begin
         Version[0] := dwFileVersionMS shr 16;
         Version[1] := dwFileVersionMS and $FFFF;
         Version[2] := dwFileVersionLS shr 16;
         Version[3] := dwFileVersionLS and $FFFF;
      end; //with VerValue^ do
      FreeMem(VerInfo, VerInfoSize);
   except
      Result := False;
   end; //try-except-end;
end; //function GetProgramVersion(sFileName: String; var Version: TIntArray): Boolean;
Du kannst den Code ja noch fuer eigene Verwendung umschreiben. Die Version steht dann im Integer-Array welches uebergeben wurde.

Greetz
alcaeus

Ca3dEsnox 11. Mai 2005 17:46

Re: Version zur Laufzeit abfragen.
 
Ok danke werds mal probieren.

Union 11. Mai 2005 22:00

Re: Version zur Laufzeit abfragen.
 
Zitat:

Zitat von Ca3dEsnox
Ich will bei meinem Programm die Version in der Titelleiste anzeigen und hab keine Lust bei jeder Änderung der Version diese von hand in der titelleiste zu ändern. Daher meine Frage: Kann man irgendwie die version während das Programm läuft auslesen? Und wie?

Es geht auch so (verwende ich so in meinen Abouts):
Delphi-Quellcode:
//------------------------------------------------------------------------
function ProgramVersion : string;
//------------------------------------------------------------------------
// Rückgabe der Versionsnummer
//------------------------------------------------------------------------
const
   InfoNum = 1;
   InfoStr : array[1..InfoNum] of string = ('FileVersion');
var
   S: string;
   n, Len, i: DWORD;
   Buf: PChar;
   Value: PChar;
begin
   S := Application.ExeName;
   n := GetFileVersionInfoSize(PChar(S), n);
   if n > 0 then
   begin

     Buf := AllocMem(n);
     GetFileVersionInfo(PChar(S), 0, n, Buf);
     for i := 1 to InfoNum do
       if VerQueryValue(Buf, PChar('StringFileInfo\040704E4\' + InfoStr[i]), Pointer(Value), Len) then
          result := result + Value;
     FreeMem(Buf, n);
   end;
end;

marabu 12. Mai 2005 07:19

Re: Version zur Laufzeit abfragen.
 
Noch ein Weg - speziell, wenn keine Release und Build Nummern ausgegeben werden:

Delphi-Quellcode:
uses
  SysUtils;
var
  Version: Cardinal;
  sVersion: string;
begin
  Version := GetFileVersion(ParamStr(0));
  sVersion := Format('Version %d.%d', [LongRec(Version).Hi, LongRec(Version).Lo]));
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.

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