Delphi记录:我们可以进行汇总分配吗?

时间:2013-04-19 18:47:03

标签: c delphi records

有没有办法像在C和C ++中那样为Delphi记录执行聚合赋值? 即是否存在以下等效语法:

struct silly { int x; int y; };
// ...
silly s = { 4, 5 };

对于Delphi?

1 个答案:

答案 0 :(得分:2)

不,没有确切的等价物。但是,你可以做一些类似的事情。

例如,如果

type
  TTestRecord = record
    A, B, C: integer;
    D, E, F: boolean;
  end;

var
  R1, R2: TTestRecord;

然后你可以做

R1 := R2;

因此,您可以按值将一条记录分配给另一条记录。但是你不能在代码中指定'record literal'。然而,相当接近它的东西很常见:如果你做了

function TestRecord(A, B, C: integer; D, E, F: boolean): TTestRecord;
begin
  result.A := A;
  result.B := B;
  result.C := C;
  result.D := D;
  result.E := E;
  result.F := F;
end;

然后你可以写

R1 := TestRecord(1, 2, 3, true, false, true)

例如,这是您处理TRectTPoint的方式。 Rect中有辅助函数PointClasses.pas

撇开:常量声明中,您可以做更多的事情:

const
  R: TTestRecord = (A: 1; B: 2; C: 3; D: true; E: false; F: true);