类或记录(<t>)

时间:2019-05-23 09:55:52

标签: delphi

如何确定Delphi 是否属于特定类而不是特定记录? 我想释放列表中的元素,如果它是清洁时的类。

procedure TTableData<T>.Delete(Index: Integer);
begin
  if Items[Index] is TClass then TClass(Items[Index]).Free;
  inherited Delete(Index);
end;

1 个答案:

答案 0 :(得分:2)

您可以这样使用RTTI:

uses
  System.TypInfo;

....

procedure TTableData<T>.Delete(Index: Integer);
var
  item: T;
begin
  if PTypeInfo(TypeInfo(T)).Kind = tkClass then
  begin
    item := Items[index];
    TObject((@item)^).Free;
  end;
  inherited Delete(Index);
end;