¡Hola a todos!
Un par de cosas:
No es necesario llamar al procedimiento
SetLength con una longitud de 0 cuando la variable de
arreglo dinámico todavía no tiene asignación de memoria alguna. Aunque se trate de variables locales, Delphi inicializa en ceros / Nil todas las variables que usan contadores de referencia, como es el caso de las cadenas largas y los arreglos dinámicos.
Por otra parte, también podría definirse la rutina del ejemplo a manera de función en lugar de procedimiento:
Código Delphi
[-]
Function TForm1.MiFuncion :TRegArray;
Begin
SetLength (Result, 2); Result [0].X := '0';
Result [1].X := '1';
End;
procedure TForm1.Button1Click(Sender: TObject);
Var
Reg :TRegArray;
begin
Reg := MiFuncion;
ShowMessage (Reg [0].X + ', ' + Reg [1].X);
end;
Saludos.
Al González.