Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何从实例类获取属性名_String_Class_Delphi_Properties_Get - Fatal编程技术网

String 如何从实例类获取属性名

String 如何从实例类获取属性名,string,class,delphi,properties,get,String,Class,Delphi,Properties,Get,我需要从对象类中获取属性名作为字符串。在德尔福有可能吗 我需要将属性传输作为方法的参数,并将属性名称作为字符串获取。我不想使用属性名作为参数,因为在类中更改属性名时,编译器不会捕获错误 type TMyClass = class private fField: some_type; public property Field:some_type read fField; end; function GetPropertyName(arg: ??):string

我需要从对象类中获取属性名作为字符串。在德尔福有可能吗

我需要将属性传输作为方法的参数,并将属性名称作为字符串获取。我不想使用属性名作为参数,因为在类中更改属性名时,编译器不会捕获错误

type
  TMyClass = class
  private
    fField: some_type;
  public
    property Field:some_type read fField;
  end;

function GetPropertyName(arg: ??):string
begin
  Result := arg.PropertyName; // here I need get property name form transfer type
end;

var
  obj: TMyClass;
  name: string;
begin
  name := GetPropertyName(obj.Field);  
end;

为了澄清,正如评论中所讨论的,我正在寻找一个与C#函数直接等价的函数

从您的评论中可以清楚地看出,您正在寻找与C#函数等效的Delphi


Delphi中不存在这样的等价物,而且该语言也没有让您自己创建它的工具。相反,您需要在代码中将该方法命名为字符串文字

对不起,这个问题我一点也不懂。您希望写入
name
的值是多少?您的属性
字段的名称是字段。如果您搜索其他内容,请更好地描述您的问题。对不起,我需要以字符串形式获取属性名称。方法GetPropertyName(obj.Field)必须返回字符串'Field',而不是fFieldDude的值,您所要求的是不可能的。如果需要名称,则需要传递名称。您可以使用RTTI来读取属性值。我建议使用RTTI来迭代所有可用的字段、方法和属性。然后,您可以看到所有方法、属性和字段的名称,以及字段和属性的所有元信息(数据类型、可见性),以及属性的访问可能性(r/w/default/stored),等等。首先,请检查此选项: