パージョン情報の取込み

解決


AMI  2008-01-23 17:14:00  No: 29457  IP: 192.*.*.*

教えていただきたいのですが、
プロジェクトのオプションの中でパージョン情報のタグがありますが、
ここでバージョン番号を含めるにしてバージョン登録したものを
Delphiの処理の中のこのパージョン情報を取込むことが可能でしょうか。

編集 削除
 2008-01-23 17:28:55  No: 29458  IP: 192.*.*.*

Delphiのヘルプにも書かれているとは思いますが、
GetFilevVersionInfo関数とVerQueryValue関数を使えば
自身のEXEの情報を取得できます。

「Delphi バージョン情報」あたりで検索すればそのもの
ズバリの回答がありましたので、それを参照してください。

編集 削除
 2008-01-23 17:29:57  No: 29459  IP: 192.*.*.*

誤:GetFilevVersionInfo
  ↓
正:GetFileVersionInfo

誤記修正です。

編集 削除
Fusa  URL  2008-01-23 17:44:14  No: 29460  IP: 192.*.*.*

http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/FileUnit/FileUnit.pas.txt

ここの
function GetFileVersionInformation(FileName, TitleKey: String): String;
を使ってください。

編集 削除
maru3  2008-01-23 20:44:59  No: 29461  IP: 192.*.*.*

今作成しているアプリでバージョン(リビジョン)を表示して
使用している方と内容が合うように、
バージョン番号を表示するようにしています。
以下のようにするとOKでした。


//バージョン番号の取得(自動付加バージョン番号)
function GetFileVersion(): string;
var
  Size, SizeFileInfo, Ret: DWORD; pData, pInfo: Pointer;
begin
  Size := GetFileVersionInfoSize(PCHAR(Application.ExeName), Ret);
  GetMem(pData, Size);
  try
    Assert(GetFileVersionInfo(PCHAR(Application.Exename), 0, Size, pData));
    Assert(VerQueryValue(pData,
       PCHAR('\StringFileInfo\041103A4\FileVersion'), pInfo,
       SizeFileInfo));
    Result := PCHAR(pInfo);
  finally
    FreeMem(pData);
  end;
end;

どこかで・・・・メインフォームかな???

  Label_Ver.Caption   :=  'Ver '+ GetFileVersion;

編集 削除
AMI  2008-01-23 21:11:30  No: 29462  IP: 192.*.*.*

邪様、Fusa様、maru3様
有難うございました。一から十まで教えて頂きました。
助かりました。

編集 削除
Fusa  2008-01-23 23:11:02  No: 29463  IP: 192.*.*.*

>>maru3さん

ライブラリを作成するという意味ではより汎用性を高めると
再利用がしやすくなりますよ。

function GetFileVersion(): string;
の中にApplication.Exenameが入っていらっしゃるので

function GetFileVersion(FileName: string): string;
として、Application.Exenameを指定しているところを
FileNameで指定して

function GetApplicationVersion(Application.ExeName): string;
と書くと、


元々の機能は
 Label_Ver.Caption   :=  'Ver '+ GetApplicationVersion;
として書けますし、他のexeファイルのversionを調べたい場合は
 Label_Ver.Caption := 'Ver ' + GetFileVersion('C:\...\notepad.exe');

このように書けて汎用性が高まります。


手前みそですがうちのは
Label1.Caption := ApplicationTitlePlusVersion('アプリ名', ' ver ', vfMajorMinor);
と書くことで、メジャー/マイナー/リリース、どこまでのバージョン情報を追加するかを指定できます。

編集 削除
Fusa  URL  2008-01-23 23:13:46  No: 29464  IP: 192.*.*.*

[パ]ージョン情報?かよ!

編集 削除
座布団一枚  2008-01-24 00:07:06  No: 29465  IP: 192.*.*.*

↑ナイス突っ込み^^

編集 削除