0

.RC ​​ファイルの一部のリソースは、.RC ファイルで指定された ID を持つ結果の .exe では使用できません。ID 10000、10100 などのリソース文字列を含む RC ファイルがあります。何らかの理由で、ID 10000 (LoadStr(10000)) のリソースをロードすると、別の文字列 ('Invalid field type.' - midas.rc で宣言されている) がロードされます。 VCL からのもので、同じ ID を持っています)。

同じ ID を持つリソースは、ビルド中に "[Error] WARNING. Duplicate resource(s)" につながると想定しました。ただし、リンカー関連の警告はありません。

ps私はDelphi 2010を使用しています。

アップデート:

  • この問題の回避策は、id を 10000 から別のものに変更することです。10050、例えば

質問:

  • 重複リソースに関する警告がないのはなぜですか?
  • 将来その問題を防ぐために何ができるでしょうか?

株式会社マイプロジェクト

const
  offLanguages   = 10000;
  offCurrencies  = 10100;

myproject.RC ファイル

LANGUAGE LANG_LATVIAN, SUBLANG_NEUTRAL

#include "myproject.inc"

STRINGTABLE
{
 offLanguages+0, "LV"
}

.. etc...

Rc ファイルは myproject.res ファイルにコンパイルされます。結果の.resファイルには、ID 10000の正しい文字列「LV」があります(リソースエディターで確認しました)。

Delphi coude では、LoadStr 関数を使用してユニットの初期化部分にリソースがロードされます。

likeThat.pas:

unit likeThat;

interface

{$I *.inc}
{$R *.res}

// skipped

initialization
  Assert(LoadStr( offLanguages )= 'LV'); // <== fails here
4

0 に答える 0