6

Delphi では、モジュールのリソース セクションの文字列テーブルに格納される文字列を宣言できます。

resourcestring
  rsExample = 'Example';

コンパイル時に、Delphi によって ID が割り当てられ、文字列テーブルに格納されます。

リソース文字列として宣言されている文字列の ID を取得する方法はありますか?

その理由は、gnugettext と同じように機能するパッケージを使用しているためです。System.pas の一部の関数 (LoadResString など) はフックされているため、式でリソース文字列を使用すると、別の文字列 (翻訳) に置き換えられます。もちろん、これは非常に便利ですが、リソース文字列の元の (翻訳されていない) テキストが必要になることがあります。

文字列のリソース ID を取得できたら、LoadString API を呼び出して、翻訳されたテキストではなく元のテキストを取得できます。

4

1 に答える 1

10

リソース文字列のリソース ID を取得するには、文字列のアドレスをPResStringRec型にキャストしてから値にアクセスしIdentifierます。

このサンプルを試す

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

resourcestring
  rsExample  = 'Example';
begin
  try
    Writeln(rsExample);
    Writeln(PResStringRec(@rsExample)^.Identifier);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  readln;
end.
于 2013-07-16T16:12:02.907 に答える