![]() |
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 |
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; |
Re: Versionnummer des Programm auslesen?
Irgendwann mal ... äh ... geliehen von Luckie (glaube ich):
Delphi-Quellcode:
Ins Projekt einbinden, und bspw. so aufrufen:
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.
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); |
Re: Versionnummer des Programm auslesen?
Danke werde mir beides ankucken ;-)
|
Re: Versionnummer des Programm auslesen?
OK. Beides funktioniert super ;-)
Nur eine Frage noch, wie kann ich mir auch die Build-Nummer anzeigen lassen? |
Re: Versionnummer des Programm auslesen?
Wird bei mir angezeigt. Ausprobiert mit Chakotay ihm seinen MovieOrganizer. :)
Da stammt nämlich die "MessageBox" her. |
Re: Versionnummer des Programm auslesen?
Moin Mathias,
nur falls es Probleme damit gibt: Das sieht so aus als hätte ich es "verbrochen" ;-) |
Re: Versionnummer des Programm auslesen?
Also ich kann nicht klagen. Bisher hat´s angezeigt, was es anzeigen sollte. :)
|
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. |
Re: Versionnummer des Programm auslesen?
Moin Alexander,
Zitat:
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 17:31 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 by Thomas Breitkreuz