Hola.
El problema se debe a que tenés una confusión entre el concepto de
array dinámico y el de
vectores abiertos.
Un array dinámico es un tipo de datos y se tiene que declarar como tál, es un verdadero arreglo. En cambio un vector abierto es sólo una manera de pasar argumentos a un procedimiento o función.
Para ejemplificar lo que te comento:
Código Delphi
[-]
...
type
TArrayInteger = array of Integer;
procedure Test1(Vec: TArrayInteger);
begin
SetLength(Vec,10);
SetLength(Vec,0);
end;
procedure Test2(Vec : array of Integer);
begin
SetLength(Vec,10); SetLength(Vec,0); end;
procedure TForm1.Button1Click(Sender: TObject);
var
V: TArrayInteger;
begin
Test1(V); Test2([1,2,3,4]); end;
...
Ejemplo de uso de un array abierto
Código Delphi
[-]
...
procedure CerrarDataSets(VDataset: array of TDataSet);
var
i: Integer;
begin
for i:= Low(VDataSet) to High(VDataSet) do
TDataSet(VDataSet[i]).Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CerrarDataSets([DataSet1, DataSet2, DataSet3,...]);
end;
...
Es decir que tu código inicial debería ser algo como:
Código Delphi
[-]
Type
VDinamico = array of Integer;
TClaseCualquiera = Class
private
UnArrayDinamico : VDinamico;
OtroArrayDinamico : VDinamico;
published
constructor Create;
procedure LimpiarArray(var MiArray: VDinamico);
end;
Espero me haya explicado bíen.
Un saludo.