![]() |
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. |
Re: Versionnummer des Programm auslesen?
Ach so ;-)
Da habe ich wohl was verwechelt :? |
Re: Versionnummer des Programm auslesen?
Hallo. Bei mir funktioniert das auch. Aber nun wollte ich die Exename ändern so habe ich das gemacht Datei Project2.dpr nach Irgendwas.dpr unbenannt und in Irgendwas.dpr die Zeile "Program Project2;" in "Program Irgendwas;" eingetragen. Nun bekomme ich nach Copilieren die Dateiname Irgendwas.exe (so wollte ich das auch) abert nun tritt bei diese Funktion Getverion eine Zugriffsverletzung auf Version.dll...
Warum? Sonst funktioniert mein Programm wie gewohnt... |
Re: Versionnummer des Programm auslesen?
Vielleicht musst du beim Aufruf der Funktion, auch den Dateinamen ändern?
|
Re: Versionnummer des Programm auslesen?
Hi.
So wie Karstadt ein Projekt umbenennt, muss das schief gehen, da nur das DPR file umbenannt wird und beim anschließenden Compile die RES Datei mit den Versionsinformationen nicht gefunden wird. Entweder man macht das über den Menüpunkt "Datei | Projekt speichern unter ..." oder - um Dubletten zu vermeiden - auf der Konsolebene mit
Code:
Geburtstagsgrüße an Christian vom marabu
ren project2.* irgendwas.*
|
Re: Versionnummer des Programm auslesen?
Hallo. Was ich aber merkwürdig finde ist, wenn ich anderere Dateine Irgendwas* (außer Irgendwas.dpr) löschen, dann wird beim Ladevorgang automatisch *res, *.cfg, und *.dof erstellt. In diesen Fall funtkioniert das nur mit alte Projekt* *res, *.cfg, und *.dof. Warum ? :?: :(
|
Re: Versionnummer des Programm auslesen?
Du musst dann vermutlich nochmal die Versionseinstellungen in den Projektoptionen vornehmen, so dass diese überhaupt eingebunden werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 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