![]() |
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?
|
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.
|
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. |
Re: Version zur Laufzeit abfragen.
Hallo,
diesen Code hab ich mal irgendwo gefunden (kann sein dass es auch diese CodeLib war)
Delphi-Quellcode:
Du kannst den Code ja noch fuer eigene Verwendung umschreiben. Die Version steht dann im Integer-Array welches uebergeben wurde.
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; Greetz alcaeus |
Re: Version zur Laufzeit abfragen.
Ok danke werds mal probieren.
|
Re: Version zur Laufzeit abfragen.
Zitat:
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; |
Re: Version zur Laufzeit abfragen.
Noch ein Weg - speziell, wenn keine Release und Build Nummern ausgegeben werden:
Delphi-Quellcode:
Grüße vom marabu
uses
SysUtils; var Version: Cardinal; sVersion: string; begin Version := GetFileVersion(ParamStr(0)); sVersion := Format('Version %d.%d', [LongRec(Version).Hi, LongRec(Version).Lo])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr. |
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-2025 by Thomas Breitkreuz