0

有没有办法像我们在 C 和 C++ 中那样对 Delphi 记录执行聚合分配?即是否有以下等效语法:

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

德尔福?

4

1 回答 1

2

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

例如,如果

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

var
  R1, R2: TTestRecord;

那么你可以做

R1 := R2;

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

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. 有辅助函数RectPointClasses.pas.

顺便说一句:常量声明中,您可以做更多事情:

const
  R: TTestRecord = (A: 1; B: 2; C: 3; D: true; E: false; F: true);
于 2013-04-19T18:51:47.797 回答