Autor Beitrag
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 01.09.03 18:55 
Diese Funktion hab ich im Internet gefunden. Sie ist also nicht von mir.

Mit dieser Funktion kann man die Versionsnummer eines beliebigen Programms ermitteln. Die Version wird als Strings in der "a.b.c.d" Form zurückgegeben:


Funktion:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Funktion ermittelt die Versionsnummer einer Exe-Datei
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function GetFileVersion(const FileName: String): String;
var
  VersionInfoSize, VersionInfoValueSize, Zero: DWord;
  VersionInfo, VersionInfoValue: Pointer;
begin
      { Ist Datei nicht vorhanden, dann Hinweis und raus aus Funktion ...}
  if not FileExists(FileName) then
  begin
    Result := '-1';  { alternativ auch 'File not found' oder sonstwas }
    Exit;
  end;

      { sonnst weiter. }
  Result := '';
  VersionInfoSize := GetFileVersionInfoSize(PChar(FileName), Zero);
  if VersionInfoSize = 0 then Exit;
      { Bei nicht genug Speicher wird EOutOfMemory-Exception ausgelöst }
  GetMem(VersionInfo, VersionInfoSize);
  try
    if GetFileVersionInfo(PChar(FileName), 0, VersionInfoSize, VersionInfo) and
      VerQueryValue(VersionInfo, '\' { root block }, VersionInfoValue,
      VersionInfoValueSize) and (0 <> LongInt(VersionInfoValueSize)) then
    begin
      with TVSFixedFileInfo(VersionInfoValue^) do
      begin
        Result := IntToStr(HiWord(dwFileVersionMS));
        Result := Result + '.' + IntToStr(LoWord(dwFileVersionMS));
        Result := Result + '.' + IntToStr(HiWord(dwFileVersionLS));
        Result := Result + '.' + IntToStr(LoWord(dwFileVersionLS));
      end{ with }
    end{ then }
  finally
    FreeMem(VersionInfo);
  end{ try }
end{ GetFileVersion }



Beispiele:

Um die Version des eigenen Programms in der Titelleiste des Fensters anzuzeigen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption := GetFileVersion( ParamStr(0) );   
end;


Um die Version eines fremden Programms (z.B. Windows Rechner) anzuzeigen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage( GetFileVersion('c:\windows\calc.exe') );
end;


Um die Versionsnummer ins Projekt zu übernehmen muß im Delphi-Editor im Menü "Projekt > Optionen > Versionsinfo" die Checkbox "Versionsinfo ins Projekt übernehmen" angewählt werden. Die Angaben haben dann follgende Bedeutung:

Hauptversion - Nebenversion - Ausgabe - Compilierung

_________________
Popov