リソース文字列
リソース文字列を使用する Delphi のユニットにコードを作成した場合、Delphi コンパイラ(DCC32)は、ヘッダー ファイルを生成するときに、各リソース文字列のグローバル変数と対応するプリプロセッサ マクロを生成します。このマクロは、リソース文字列を自動的に読み込むのに使用され、C++ コード内でリソース文字列が参照されているすべての箇所で使用されることを目的としています。たとえば、Delphi コードの resourcestring セクションが次のコードを含むとします。
unit MyUnit;
interface
resourcestring
Warning = 'Be careful when accessing string resources.';
implementation
begin
end.
これに対応する、C++Builder の Delphi コンパイラが生成するコードは、次のようになります。
extern PACKAGE System::Resource ResourceString _Warning;
#define Myunit_Warning System::LoadResourceString(&Myunit::_Warning)
- メモ:
- C++ が大文字/小文字を区別する言語であるため、C++ ではユニット名は正規化されます。ユニット名 "MyUnit" が C++ では "Myunit" になるのはそのためです。
- "_Warning" は、Delphi コンパイラで生成される ResourceString の他のあらゆるインスタンスと同じように、"Myunit" 名前空間内に宣言されるため、
Myunit::_Warning
としてアクセスする必要があります。 - #define 行があるため、LoadResourceString を明示的に呼び出さなくても、エクスポートされた Delphi リソース文字列を "Myunit_Warning" として使用することができます。