我有一个在其resourcestring部分中具有implementation的单元。如何在另一个单元中获取resourcestring的标识符?

unit Unit2;

interface

implementation

resourcestring
  SampleStr = 'Sample';

end.


如果在interface部分中可用,我可以这样写:

PResStringRec(@SampleStr).Identifier

最佳答案

在单元的implementation部分中声明的任何内容都是该单元的私有内容。不能直接从另一个单元访问它。因此,您将必须:


resourcestring移至interface部分:

unit Unit2;

interface

resourcestring
  SampleStr = 'Sample';

implementation

end.




uses
  Unit2;

ID := PResStringRec(@Unit2.SampleStr).Identifier;

resourcestring保留在implementation部分中,并在interface部分中声明一个函数以返回标识符:

unit Unit2;

interface

function GetSampleStrResID: Integer;

implementation

resourcestring
  SampleStr = 'Sample';

function GetSampleStrResID: Integer;
begin
  Result := PResStringRec(@SampleStr).Identifier;
end;

end.




uses
  Unit2;

ID := GetSampleStrResID;

10-05 22:26