c - Delphi记录: can we do aggregate assignment?

标签 c delphi records

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

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

用于德尔福?

最佳答案

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

例如,如果

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 的方式。 Classes.pas 中有辅助函数RectPoint

旁白:在常量声明中,您可以做更多的事情:

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

关于c - Delphi记录: can we do aggregate assignment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16111535/

相关文章:

c - c-sel函数中的scandir实现

delphi - 如何模拟 Alt+Shift 来更改 Windows 中的语言(第二部分)?

delphi - 如何使用TD词典?

delphi - 为什么使用real进行计算与使用int进行计算会得出不同的结果?

mysql - 如何更新符合SQL条件的多行

c - 以下使用 FILE*、ftell、fwrite 和 fflush 的代码线程安全吗?

c - 同样的代码每次执行时间都不一样

c - mlockall 和共享库

arrays - 初始化VHDL中的记录数组

perl - 在 Perl 中,如何使用出现在第一个冒号 ( :)? ) 之前的数字对记录进行排序