使用Delphi'和#39;括号中的关键字

时间:2018-06-07 12:58:25

标签: delphi

我需要添加一些初始化而不向var部分添加变量声明,所以我尝试这样做:

sql.columns.Add(with TColumn.Create do
begin
   ColName := 'Price';
    As_  := 'MaxPrice';
end);

但Delphi在编译时会引发错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

TList<T>.Add()期望完全构造的对象作为输入。 with关键字不允许您访问其正在操作的对象。无论你喜欢与否,你都需要使用变量:

var
  col: TColumn;

col := TColumn.Create;
col.ColName := 'Price';
col.As_ := 'MaxPrice';
sql.columns.Add(col);

替代方法是编写函数,并使用其特殊的Result变量:

function MakeColumn(const AName, AAs: string): TColumn;
begin
  Result := TColumn.Create;
  Result.ColName := AName;
  Result.As_ := AAs;
end;

sql.columns.Add(MakeColumn('Price', 'MaxPrice'));