AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Versionnummer des Programm auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Versionnummer des Programm auslesen?

Ein Thema von Alexander · begonnen am 26. Okt 2003 · letzter Beitrag vom 30. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 13:31
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
Also ich irgendwie sowas wie Application.Version oder Application.Productversion oder so.
Wie mache ich das?
DAnke schon mal
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 13:35
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;
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 13:35
Irgendwann mal ... äh ... geliehen von Luckie (glaube ich):
Delphi-Quellcode:
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.
Ins Projekt einbinden, und bspw. so aufrufen:
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);
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#4

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 13:36
Danke werde mir beides ankucken
Alexander
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#5

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 13:46
OK. Beides funktioniert super
Nur eine Frage noch, wie kann ich mir auch die Build-Nummer anzeigen lassen?
Alexander
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 13:53
Wird bei mir angezeigt. Ausprobiert mit Chakotay ihm seinen MovieOrganizer.
Da stammt nämlich die "MessageBox" her.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 14:28
Moin Mathias,

nur falls es Probleme damit gibt: Das sieht so aus als hätte ich es "verbrochen"
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 15:08
Also ich kann nicht klagen. Bisher hat´s angezeigt, was es anzeigen sollte.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#9

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 17:45
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.
Ich habe es auch leider ncith hinbekommen, wäre toll wenn jemand das wüsste.
Alexander
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Versionnummer des Programm auslesen?

  Alt 26. Okt 2003, 17:57
Moin Alexander,

Zitat von alexander:
Allerdings fehlt die Built- oder Compilierungs-Nummer
Die Buildnummer ist die vierte Stelle.

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 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