A mi esto me compila y se ejecuta perfectamente en
Delphi 11.2 Patch 1
NOTA: No uso la etiqueta de Delphi, porque parece que no gestiona bien los símbolos de
MayorQue y
MenorQue de los genéricos.
Código:
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TDatoA = record
A: integer;
end;
TDatoB = record
B: integer;
end;
/// 2.)
TArrayA = TArray<TDatoA>;
TArrayB = TArray<TDatoB>;
TArrayAHelper = record helper for TArrayA
procedure Clear;
end;
TArrayBHelper = record helper for TArrayB
procedure Clear;
end;
TForm3 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
A: TArrayA;
B: TArrayB;
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
/// ...
A.Clear;
B.Clear;
end;
{ TArrayAHelper }
procedure TArrayAHelper.Clear;
begin
var len:integer := Length(Self);
// form3.Memo1.Lines.Add('Longitud=' + len.ToString);
for var i:integer := 0 to len-1 do
Self[i].A := 0;
end;
{ TArrayBHelper }
procedure TArrayBHelper.Clear;
begin
var len:integer := Length(Self);
// form3.Memo1.Lines.Add('Longitud=' + len.ToString);
for var i:integer := 0 to len-1 do
Self[i].B := 0;
end;