喫茶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

[5335] Re5:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 09:41:31 Sara
▼ Mr.XRAYさん
> あれっ!? SOさんのが消えている...
>
> > 無印でもなりますね.やっぱり一連のバージョン情報関係の現象と関連
> > あるのかも.
>
> 後で"CGRC ラッパー"をテストしてみます.
> http://ht-deko.minim.ne.jp/ft1109.html#110923


了解しました。お手数をおかけします。m(_ _)m

しかし、この件をいろいろ調べていて、ようやくDEKOさんの記事の意味が
把握できました・・・(^^;
DEKOさんところの記事、私には不明なことが多くて・・・(^^;


今、職場(笑)なので、帰ったら私もCGRCラッパーを試してみます。

[5336] Re6:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 10:04:08 Mr.XRAY
> 今、職場(笑)なので、帰ったら私もCGRCラッパーを試してみます。

ダウンロードすると,使い方が書いてあります.
私はバージョン情報等必要ないので,ダウンロードしているだけー! (笑)

>DEKOさんところの記事、私には不明なことが多くて・・・(^^;

私だって,ついていくのが大変です.ハイ.目を通しているだけです.
情報が早いですから.その分貴重です.
不明というか,DEKOさんには申し訳ないですが,「テクニック・アルゴリズム」
の方は文章が整っています.一方,「ざつだん」は速報性重視だと思います.
その分複数の日数にまたがったりして,理解がしにくいこともあるかも
知れません.
過去のように,コミュニティに情報があふれている時代と違い,DEKOさんの
ところやふーさんのところの情報は貴重です,少なくとも本家のよりは (^^;
ゴメンなさい,Embarcaderoさん!!

俗に言う「生きているサイト」ですもん.
まっ,「あやしいお部屋」ですもん(またまたしつこい!!)
初めて「あやしいお部屋」を訊ねた時,どこかあやしいんだ? きっと本人のことだ.
と思ってしまいました.気に入ってしまいました.この名前.


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