![]() |
Programm-Version ermitteln
Hallo an Alle!
Erst mal ein großes Lob für dieses tolle Forum, ich habe mir hier als Gast schon so manche Anregung geholt! Eine Frage konnte ich allerdings nirgens beantwortet finden: Wie kann eine laufende Anwendung seine eigene Programm-Version ermitteln? Ihr wisst schon: diejenige, die man unter "Versionsinformationen" unter den Eigenschaften einer Programmdatei abfragen kann (muss ja irgendwo im Header der EXE-Datei stehen...). Gibt`s da `ne Windows-API-Funktion? Bitte schlagt mich nicht gleich, wenn diese Frage schon tausendmal gestellt und beantwortet wurde...! :roll: Hintergrund: Ich möchte die interne Versionsnummer mit der Versionsnummer in einer INI-Datei vergleichen, um sicherzustellen, dass beide miteinander kompatibel sind... Danke im Voraus! |
Re: Programm-Version ermitteln
GetFileVersionInfo
Gibt aber diverse Threads dazu in der DP! |
Re: Programm-Version ermitteln
hier ein kurzer Quelltext-Auszug, der bei mir funktioniert:
Delphi-Quellcode:
Verwendung:
// Versionsinformation aus exe-File auslesen
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;
Delphi-Quellcode:
edit: der Quellcode stammt nicht von mir, hab ich hier in DP gefunden.
LaVersion.Caption := 'Version ' + GetVersion; // Fileversion auslesen aus exe
|
Re: Programm-Version ermitteln
Hallo,
diese Variante hat mir Matti vor einiger Zeit so geschickt, näheres dazu auch ![]()
Delphi-Quellcode:
type
TGetVersionsStr = Record ShortString: String[12]; LongString: String[24]; end;
Delphi-Quellcode:
Aufruf:
function TForm1.GetVersion: TGetVersionsStr;
var VerInfoSize: DWORD; VerInfo: Pointer; VerValueSize: DWORD; VerValue: PVSFixedFileInfo; Dummy: DWORD; begin VerInfo := nil; try VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy); try GetMem(VerInfo, VerInfoSize); GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo); VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); with VerValue^ do begin Result.LongString := Format('%d.%d.%d.%d', [dwFileVersionMS shr 16, dwFileVersionMS and $FFFF, dwFileVersionLS shr 16, dwFileVersionLS and $FFFF]); Result.ShortString := Format('%d.%d', [dwFileVersionMS shr 16, dwFileVersionMS and $FFFF]); end; finally FreeMem(VerInfo, VerInfoSize); end; except Result.ShortString := #$31#$2E#$30; // 1.0 Result.LongString := Result.ShortString; end; end;
Delphi-Quellcode:
Label1.Caption := format('Version: %s', [GetVersion.LongString]); //oder natürlich auch 'GetVersion.ShortString'
|
Re: Programm-Version ermitteln
Danke Jungs, GetFileVersionInfo ist natürlich genau richtig - aber wenn man nich weiss, wie die API-Funktion heisst, steht man da wie der Ochs vorm Berg...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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