喫茶XRAYトップページ

[スレッド全体
]

[5328] XE2 バージョン情報の取得にて返信 削除
2011/9/28 (水) 22:26:03 Sara
みなさん、こんばんは。

Delphi XE2(Update1)で、以下のコードをもちいてバージョン情報の取得をする場合、
プロジェクトオプションのロケーションを日本語(日本)に設定すると、バージョン情報が
取得できません。(標準の英語 (米国)に戻すと取得できる)

何故かわかる方、ご教示をお願いします。m(_ _)m
(まぁ、英語(米国)にしておけば、動作するので、困ってはいないんですが(^^; )

function GetVersionInfo(KeyWord: TVerResourceKey): string;
const
  Translation = '\VarFileInfo\Translation';
  FileInfo = '\StringFileInfo\%0.4s%0.4s\';
var
  BufSize, HWnd: DWORD;
  VerInfoBuf: Pointer;
  VerData: Pointer;
  VerDataLen: Longword;
  PathLocale: String;
begin
  BufSize := GetFileVersionInfoSize(PChar(Application.ExeName), HWnd);
  if BufSize <> 0 then
  begin
    GetMem(VerInfoBuf, BufSize);
    try
      GetFileVersionInfo(PChar(Application.ExeName), 0, BufSize, VerInfoBuf);
      VerQueryValue(VerInfoBuf, PChar(Translation), VerData, VerDataLen);
      if not (VerDataLen > 0) then
        raise Exception.Create('情報の取得に失敗しました');
      PathLocale := Format(FileInfo + KeyWordStr[KeyWord],
        [IntToHex(Integer(VerData^) and $FFFF, 4),
         IntToHex((Integer(VerData^) shr 16) and $FFFF, 4)]);
      VerQueryValue(VerInfoBuf, PChar(PathLocale), VerData, VerDataLen);
//ここでVerDataLenが0になる・・・(英語(米国)だと0以外になる)
      if VerDataLen > 0 then
      begin
        result := '';
        SetLength(result, VerDataLen);
        StrLCopy(PChar(result), VerData, VerDataLen);
      end;
    finally
      FreeMem(VerInfoBuf);
    end;
  end;
end;


[5330] Re:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 00:05:02 Mr.XRAY
▼ Saraさん

> プロジェクトオプションのロケーションを日本語(日本)に設定すると、バージョン情報が
> 取得できません。(標準の英語 (米国)に戻すと取得できる)


これって,ざつだんの11/09/23にある2番目の問題とはまた違うようですね.
さて.UP1で修正されているとか...


[5331] Re2:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 00:37:40 Sara
▼ Mr.XRAYさん

> > プロジェクトオプションのロケーションを日本語(日本)に設定すると、バージョン情報が
> > 取得できません。(標準の英語 (米国)に戻すと取得できる)
>
> これって,ざつだんの11/09/23にある2番目の問題とはまた違うようですね.
> さて.UP1で修正されているとか...


いえ、この現象が起きているのは、Update1です。(無印は不明 もう環境がないので)


あと、以前書いたTPageControlに関する表示の不具合ですが・・・
Windows7上で正常に動作しているプロジェクトを丸ごと、WindowsXP上で
ビルドすると・・・またページコントロールが透けて他のシートが見える不具合が
再発してしまった・・・なんか、XE2のバグのような気がするんですが・・・(^^;
(ちなみに、スタイルをWindows以外に設定している場合です。 Windowsスタイルでは正常)

これは、たまたまWindows7でビルドしたEXEがVMPlayer上のWindowsXPで正常に動作しなかったので、
VMPlayerのWindowsXP上にDelphi XE2をインストールしてプロジェクトをビルドした時に起きた現象
です・・・しかも、Windows7上でビルドしたEXEがXP上で正常に動作しないのに、XPでビルドしたら、
WindowsXP上で正常に動くし・・・何なんだ・・・(^^;

しかも、XPでビルドしたEXEはXPでPageControl他のシートが透けて見えるのに、Windows7では正常に表示される・・・

もう、なにがどうなっているのやら・・・(^^;

XE2のスタイルは封印した方が良いかな・・・(^^; せっかく使えるのに・・・
まぁ、スタイルを使うと画面表示がずいぶん遅くなるので、ちょっと引きますが・・・

[5332] Re3:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 08:12:04 Mr.XRAY
▼ Saraさん

> (無印は不明 もう環境がないので)

折角コードを提示してくださったので,やってみました.
無印でもなりますね.やっぱり一連のバージョン情報関係の現象と関連
あるのかも.
同じコードを,6,7,2007.2009,2010,XEでやってみましたが,問題ありません.
日本語にしても設定したバージョン番号が表示されます.
IDEを終了して,再起動しても,オプションのバージョン情報は日本語で,
設定値もそのままです.


[5334] Re4:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 08:55:37 Mr.XRAY
あれっ!? SOさんのが消えている...

> 無印でもなりますね.やっぱり一連のバージョン情報関係の現象と関連
> あるのかも.


後で"CGRC ラッパー"をテストしてみます.
http://ht-deko.minim.ne.jp/ft1109.html#110923

[5337] Re5:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 10:56:33 SO
▼ Mr.XRAYさん
> あれっ!? SOさんのが消えている...

あれ、スミマセン(^-^;A

記事No.5330にて"ざつだん"の件が載っていたので、
不要かと。。。

[5338] Re6:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 11:23:27 Mr.XRAY
▼ SOさん,こんにちは.

> 記事No.5330にて"ざつだん"の件が載っていたので、
> 不要かと。。。


記事のURLが書いてなかったので,私がSOさんのかわりに書きました!!
いえ,怒ってなんかいません.(^^;


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82