如何将任何记录(任何类型)传递给Delphi xe7函数作为参数?

哈米德

我想定义一个获取记录(任何类型)并将其字段作为字符串的函数。我的问题是如何传递记录以用作参数?如何声明参数?

Function GetRecordFields(MyRecord: any record type): string
var
  ctx   : TRttiContext;
  t     : TRttiType;
  field : TRttiField;
begin
 result := '';
 ctx := TRttiContext.Create;
 for field in ctx.GetType(TypeInfo(MyRecord)).GetFields do
 begin
   t := field.FieldType;
   result := result + ' | ' + Format('Field : %s : Type : %s',[field.Name,field.FieldType.Name]);
 end;
end;
雷米·勒博(Remy Lebeau)

使用泛型,例如:

type
  TRecordHlpr<T: record> = class
  public
    class function GetFields(const Rec: T): string;
  end;

function TRecordHlpr<T>.GetFields(const Rec: T): string;
var
  ctx   : TRttiContext;
  t     : TRttiType;
  field : TRttiField;
begin
 Result := '';
 ctx := TRttiContext.Create;
 for field in ctx.GetType(TypeInfo(T)).GetFields do
 begin
   t := field.FieldType;
   Result := Result + ' | ' + Format('Field : %s : Type : %s : Value : %s', [field.Name, field.FieldType.Name, field.GetValue(@Rec).AsString]);
 end;
end;

type
  TMyRecord = record
    // fields here...
  end;

var
  rec: TMyRecord;
  S: String;
begin
  // fill rec as needed...
  S := TRecordHlpr<TMyRecord>.GetFields(rec);
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将任何记录(任何类型)传递给Delphi xe7函数作为参数?

来自分类Dev

使用参数Delphi XE7 Firedac

来自分类Dev

如何将任何结构传递给函数?

来自分类Dev

如何将任何结构传递给函数?

来自分类Dev

如何将(void **)传递给函数并有效地取消引用/用于任何类型?

来自分类Dev

C++ 函数到 Delphi XE7

来自分类Dev

如何将任何对象作为参数传递给WCF服务?

来自分类Dev

将任何对象类型传递给函数C ++

来自分类Dev

如何将函数作为参数传递给参数?

来自分类Dev

如何将函数作为参数传递给transform()函数?

来自分类Dev

如何将动态类型的参数传递给函数?

来自分类Dev

Android Delphi XE7如何存储函数指针以供以后访问?

来自分类Dev

如何将长整型值传递给以整数作为返回类型的函数的参数?

来自分类Dev

如何将通道作为参数传递给函数?

来自分类Dev

Python:如何将列表作为参数传递给函数?

来自分类Dev

如何将参数作为函数传递给变量?

来自分类Dev

如何将向量作为函数参数传递给指针

来自分类Dev

如何将结构作为参数传递给函数?

来自分类Dev

如何将函数作为参数传递给OpenSCAD模块?

来自分类Dev

如何将元组作为参数传递给divmod()函数

来自分类Dev

如何将元组作为参数传递给divmod()函数

来自分类Dev

如何将模板作为参数传递给函数

来自分类Dev

旋转图像Delphi XE7

来自分类Dev

Delphi Console XE7透明屏幕

来自分类Dev

文字提示Delphi XE7

来自分类Dev

Delphi XE7智能指针

来自分类Dev

使用Delphi XE7并行库

来自分类Dev

在Delphi XE7 Android中的Messagedlg

来自分类Dev

Delphi XE7 Android Indy IRC

Related 相关文章

热门标签

归档