携帯版
5090 (isweb) + 79520 (Vector) + Counter by XREA.COM


メニュー
アンテナ
Autch.net > 小ネタ > 自分自身のバージョン情報を取得するには Last-Modified: 2008-09-10 16:40:03 (JST)

[Delphi] 自分自身のバージョン情報を取得するには

概要

Visual Basic の App オブジェクトとは異なり,Delphi の TApplication クラスには,自分自身のバージョン情報を取得するためのプロパティやメソッドは存在していない。

かわりに,VerQueryValue() を自前で呼び出すことによってバージョン情報を得ることになるが, どうせならユニットとして定義してしまえば再利用もしやすくなる。

ここでは,Version ユニットとして,この機能を実装する。

コード

version.pas
unit Version;

interface

type
  TVersion = record
    Major, Minor, Revision, Build: Cardinal;
    StringVersion: String;
  end;

var
  theVersion: TVersion;

implementation

uses Windows, SysUtils, Classes, Forms;

procedure LoadVersionInfo;
var
  sExeName: string;
  nSize, nRead: DWORD;
  pBuffer: PChar;
  pValue: PChar;
  tsStrings: TStringList;
begin
  sExeName := Application.ExeName;
  nSize := GetFileVersionInfoSize(PChar(sExeName), nSize);
  if nSize > 0 then
  begin
    pBuffer := AllocMem(nSize);
    try
      GetFileVersionInfo(PChar(sExeName), 0, nSize, pBuffer);
      if VerQueryValue(pBuffer, PChar('StringFileInfo\041103A4\FileVersion'), Pointer(pValue), nRead) then
      begin
        tsStrings := TStringList.Create;
        try
          ExtractStrings(['.'], [], pValue, tsStrings);
          with theVersion do
          begin
            Major := StrToInt(tsStrings[0]);
            Minor := StrToInt(tsStrings[1]);
            Revision := StrToInt(tsStrings[2]);
            Build := StrToInt(tsStrings[3]);
            StringVersion := pValue;
          end;
        finally
          tsStrings.Free;
        end;
      end;
    finally
      FreeMem(pBuffer, nSize);
    end;
  end;
end;

initialization
  LoadVersionInfo;

end.

解説

このユニットを,バージョン情報を取得したいユニットの implementation 節の uses 文に追加する。

手続き LoadVersionInfo では,冒頭で定義されている TVersion 型のレコードに,アプリケーションの 実行ファイルのリソース情報から取得した,バージョン情報を入れる。この手続きは initialization 節に記述されているので,アプリケーションの実行時に実行される。

取得したバージョン情報は,interface 節で宣言された変数 theVersion に 格納されるので,このユニットを uses しさえすればどこからでも使えるようになる。

なお当然のことだが,このユニットが正常に機能するには,Delphi IDE のプロジェクトメニューから オプションを選び,バージョン情報リソースの埋め込みを有効にしなければならない。

出典

Delphi ヘルプより改変


Autch.net > 小ネタ > 自分自身のバージョン情報を取得するには Last-Modified: 2008-09-10 16:40:03 (JST)
Valid XHTML 1.0! Valid CSS! Made with Cascading Style Sheets Powered by PHP Powered by Smarty
転載・引用・リンク・アンリンク自由。一切のコンテンツは無保証。
Copyright © 2000 - 2008, Autch.net. "gray_forest" theme designed by OCEAN-NET.