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;

したがって、1 つのレコードを値によって別のレコードに割り当てることができます。ただし、コードで「レコード リテラル」を指定することはできません。ただし、それにかなり近いものはかなり一般的です。

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)

これは、たとえば、 と を処理する方法TRectですTPoint。ヘルパー関数RectPointがありClasses.pasます。

余談:定数宣言では、もう少し多くのことができます:

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