Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
Delphi 如何生成GetFieldName()函数_Delphi - Fatal编程技术网

Delphi 如何生成GetFieldName()函数

Delphi 如何生成GetFieldName()函数,delphi,Delphi,我有: 我需要用一些有意义的名称初始化组件(TMyGridColumn)名称,但不希望将其名称硬编码为字符串文字 非RTTI解决方案将更受欢迎。对象事先不知道引用它的字段或变量。因此,如果没有更多信息,就无法编写这样的函数 如果您的函数知道哪个对象引用了该列,那么它可以使用RTTI查找其名称。如果没有RTTI,您就无法实现这一目标 我认为您面临的基本问题是,尽管您命名了函数GetFieldName,但没有传递字段。您正在传递一个对象引用。您知道名称应该采用什么形式吗?-1这应该如何回答?没有一种

我有:

我需要用一些有意义的名称初始化组件(TMyGridColumn)名称,但不希望将其名称硬编码为字符串文字


非RTTI解决方案将更受欢迎。

对象事先不知道引用它的字段或变量。因此,如果没有更多信息,就无法编写这样的函数

如果您的函数知道哪个对象引用了该列,那么它可以使用RTTI查找其名称。如果没有RTTI,您就无法实现这一目标


我认为您面临的基本问题是,尽管您命名了函数GetFieldName,但没有传递字段。您正在传递一个对象引用。

您知道名称应该采用什么形式吗?-1这应该如何回答?没有一种算法可以神奇地计算出有意义的名称:-/如果您提供了更多详细信息并使这成为一个有用的问题,我将收回下一票。GetFieldName(FMyColumn)应该返回'FMyColumn'。我无法想象GetFieldName会返回其他内容,是吗?当说Field时,我指的是TMyForm类的私有成员FMyColumn。我不引用数据集字段。而且网格不是数据绑定的。
TMyForm = class(TForm)
strict private
  FMyColumn: TMyGridColumn;
  ...
end;

...

constructor TMyForm.Create;
begin
  ...
  FMyColumn := TMyGridColumn;
  FMyColumn.Name := 'FMyColumn';

  // I wish to substirtute it with a call like this which will return 'FMyColumn'
  FMyColumn.Name := GetFieldName(FMyColumn);
  ...
end;