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

[5339] Re5:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 23:37:27 Mr.XRAY
> 後で"CGRC ラッパー"をテストしてみます.

ちょっと遅くなりましたが,やってみました.
残念ながら,以下のエラーで止まってしまいました.

[BRCC32 エラー] "brcc32" はコード 3 を伴って終了しました。

調べたら,*.vrcがUTF-8ではなく,SHIFT-JISのままでした.
また調べてみます.


[5340] Re6:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 23:42:23 Mr.XRAY
> 調べたら,*.vrcがUTF-8ではなく,SHIFT-JISのままでした.
> また調べてみます.


あれっ,このファイル,UTF-8で保存しても,SHIT-JISで読み込まれるな...
何か勘違いしているかも.

というわけで,パスします.


[5341] Re7:XE2 バージョン情報の取得にて返信 削除
2011/9/29 (木) 23:50:52 Sara
▼ Mr.XRAYさん

> > 調べたら,*.vrcがUTF-8ではなく,SHIFT-JISのままでした.
> > また調べてみます.
>
> あれっ,このファイル,UTF-8で保存しても,SHIT-JISで読み込まれるな...
> 何か勘違いしているかも.
>
>
>  BLOCK "VarFileInfo"
>  {
>   VALUE "Translation", 1041, 932
>  }
>
> のあたりがミソ?


私のほうも、いまいちうまくいきません・・・(^^;

で、放置しておいて、現在はVCL Styleがどうもヨロシクナイ
(遅いし、誤動作するし、サイズも大きくなるし)ので、
スタイルをはずすための変更をしています。
(スタイルを入れるためにいろいろ直したのに・・・)



[5342] Re8:XE2 バージョン情報の取得にて返信 削除
2011/9/30 (金) 00:05:07 Mr.XRAY
▼ Saraさん

「あやしいお部屋」雑談の9月22日の下の方に書いてあるように,

>「それはいいけど、リソース自体は英語だよ?」

ということで,無理やり納得するとか?
新規プロジェクト作成した最初だけはうまくいくんですが.
IDEを終了して,また開くと...  (^^;

> で、放置しておいて、現在はVCL Styleがどうもヨロシクナイ
> (遅いし、誤動作するし、サイズも大きくなるし)ので、
> スタイルをはずすための変更をしています。
> (スタイルを入れるためにいろいろ直したのに・・・)


ハハハッ.できるだけデフォルトの状態でお使いなるのがよろしいようで.


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