AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm-Version ermitteln

Ein Thema von Delphi-für-alle · begonnen am 10. Okt 2005 · letzter Beitrag vom 11. Okt 2005
Antwort Antwort
Delphi-für-alle

Registriert seit: 10. Okt 2005
Ort: Berlin
2 Beiträge
 
#1

Programm-Version ermitteln

  Alt 10. Okt 2005, 13:18
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...!

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!
Kunst ist die Fertigkeit des Könnens (Duden-Prosa)
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#2

Re: Programm-Version ermitteln

  Alt 10. Okt 2005, 13:21
GetFileVersionInfo

Gibt aber diverse Threads dazu in der DP!
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Programm-Version ermitteln

  Alt 10. Okt 2005, 13:27
hier ein kurzer Quelltext-Auszug, der bei mir funktioniert:
Delphi-Quellcode:
// 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;
Verwendung:
LaVersion.Caption := 'Version ' + GetVersion; // Fileversion auslesen aus exe edit: der Quellcode stammt nicht von mir, hab ich hier in DP gefunden.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Programm-Version ermitteln

  Alt 10. Okt 2005, 13:28
Hallo,

diese Variante hat mir Matti vor einiger Zeit so geschickt, näheres dazu auch hier

Delphi-Quellcode:
type
  TGetVersionsStr = Record
    ShortString: String[12];
    LongString: String[24];
  end;
Delphi-Quellcode:
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;
Aufruf:

Label1.Caption := format('Version: %s', [GetVersion.LongString]); //oder natürlich auch 'GetVersion.ShortString'
  Mit Zitat antworten Zitat
Delphi-für-alle

Registriert seit: 10. Okt 2005
Ort: Berlin
2 Beiträge
 
#5

Re: Programm-Version ermitteln

  Alt 11. Okt 2005, 12:02
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...
Kunst ist die Fertigkeit des Könnens (Duden-Prosa)
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:52 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