Как получить идентификатор ресурса таблицы строк Delphi resourcestring?
в Delphi вы можете объявить строки, которые будут храниться в таблице строк раздела ресурсов модуля.
resourcestring
rsExample = 'Example';
во время компиляции Delphi назначит для него идентификатор и сохранит его в таблице строк.
есть ли способ получить идентификатор строки, объявленной как resourcestring?
причина в том, что я использую пакет, который работает так же, как gnugettext. Некоторые функции в системе.pas (например, LoadResString) подключены, поэтому, когда я использую resourcestring в выражении он будет заменен другой строкой (переводом). Конечно, это очень удобно, но иногда мне нужен оригинальный (непереведенный) текст resourcestring.
когда я могу получить идентификатор ресурса строки, я могу вызвать API LoadString для получения исходного текста вместо переведенного текста.
1 ответов
чтобы получить идентификатор ресурса resourcestring, вы можете привести адрес строки к 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.