在Delphi 2007中,我为项目添加了一个新的字符串类型:
type
String40 = string;
Run Code Online (Sandbox Code Playgroud)
此属性用于类:
type
TPerson = class
private
FFirstName = String40;
published
FirstName: string40 read FFirstName write FFirstName;
end;
Run Code Online (Sandbox Code Playgroud)
在运行时,我想通过使用RTTI获取属性FirstName的名称.我希望它是String40:
var
MyPropInfo: TPropInfo;
PropTypeName: string;
MyPerson: TPerson;
begin
MyPerson := TPerson.Create;
MyPropInfo := GetPropInfo(MyPerson, 'FirstName')^;
PropTypeName := MyPropInfo.PropType^.Name;
Run Code Online (Sandbox Code Playgroud)
但是,在此示例中,PropTypeName是'string'.我需要做什么才能获得正确的属性类型名称'String40'?
Lie*_*ers 11
这适用于Delphi5
type
String40 = type string;
Run Code Online (Sandbox Code Playgroud)
至于你的其余代码,你应该有RTTI可用
编辑:如果编译并运行这段代码会发生什么?
program Project1;
uses
Classes,
typInfo,
Dialogs,
Forms;
{$R *.RES}
type
String40 = type string;
TPerson = class(TPersistent)
private
FFirstName: String40;
published
property FirstName: string40 read FFirstName write FFirstName;
end;
var
MyPropInfo: TPropInfo;
PropTypeName: string;
MyPerson: TPerson;
begin
Application.Initialize;
MyPerson := TPerson.Create;
MyPropInfo := GetPropInfo(MyPerson, 'FirstName')^;
PropTypeName := MyPropInfo.PropType^.Name;
ShowMessage(PropTypeName);
end.
Run Code Online (Sandbox Code Playgroud)