相关疑难解决方法(0)

无证的内在惯例

Delphi有这个列表:Delphi内在例程
但该列表不完整.

哪些无证的内在函数存在,因为它们的目的何时和目的是什么?

delphi documentation intrinsics

16
推荐指数
1
解决办法
2110
查看次数

如何释放通用 TList<T>?

我如何释放泛型TList<T>

我知道我可以在创建它时使用TObjectListwith 。AOwnsObjects = True

我很好奇,如何以通用方式重写以下方法,以便它可以在非托管引用(指针或类)T时释放?T

procedure FreeList(const List: TList);
var
  i: Integer;
begin
  if (List = nil) then
    Exit;
  for i := Pred(List.Count) downto 0 do
    if Assigned(List[i]) then
      TObject(List[i]).Free;
  List.Clear;
end;
Run Code Online (Sandbox Code Playgroud)

delphi

3
推荐指数
1
解决办法
896
查看次数

将泛型类型变量转换为字符串

我正在尝试将类型T为的泛型变量转换为string.

  TMyTest = class
    class function GetAsString<T>(const AValue : T) : string; static;
  end;

...

uses
  System.Rtti;

class function TMyTest.GetAsString<T>(const AValue : T) : string;
begin
  Result := TValue.From<T>(AValue).ToString();
end;
Run Code Online (Sandbox Code Playgroud)

它使用多种类型(如Integer, Double, Boolean...)效果很好,但使用Variant变量“失败” 。

procedure TForm1.FormCreate(Sender: TObject);
var
  Tmp : Variant;
begin
  Tmp := 123;

  ShowMessage(TMyTest.GetAsString<Variant>(Tmp));
end;
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

(变体)

我期待该VarToStr函数获得相同的输出(但我不能将该函数与通用变量一起使用):

123

delphi generics type-conversion delphi-xe7

2
推荐指数
1
解决办法
118
查看次数