Ver la Versión Completa : declarar open array
fcios
05-09-2012, 20:48:57
Hola y gracias de antemano
// tengo definida esta funcion
mifuncion1( aCampos: array of string):boolean;
// y la llamo con
mifuncion1(['c1','c2','1','2'])
// pero quiero poder mandarle otro array, por ejemplo
mifuncion1(['a1','a2','a3','a4'],['b1','b2','b3','b4']) // esto no compila :(
// ó
mifuncion1([['a1','a2','a3','a4'],['b1','b2','b3','b4']]) // esto tampoco compila :(
como debo definirla ? :confused:
ó como le debo mandar los arrays
Gracias
roman
05-09-2012, 20:54:11
¿Y por qué habría de compilar?
Tu función está declarada para aceptar un sólo parámetro y quieres pasarle dos (cada arreglo es un parámetro).
// Saludos
fcios
05-09-2012, 21:07:10
:D bueno bárbaro y entonces como la defino ?
roman
05-09-2012, 21:21:46
¿Poniendo dos parámetros en la definición? :rolleyes:
// Saludos
fcios
05-09-2012, 22:08:30
sí pero la quiero definir para poder mandarle n parámetros
y con array of array of string me da error en la definición
roman
05-09-2012, 22:44:29
No estoy seguro, pero creo que no puedes tener arreglos multidimensionales como parámetros abiertos. A lo sumo, puedes hacer una combinación de parámetros abiertos y arreglos dinámicos:
type
TDynamicStringArray = array of String;
procedure Foo(MultiArray: array of TDynamicStringArray);
begin
end;
Llamada:
var
A, B: TDynamicStringArray;
begin
SetLength(A, 2);
A[0] := 'Hola'; A[1] := 'mundo';
SetLength(B, 4);
B[0] := 'ClubDelphi';
B[1] := 'es';
B[2] := 'el';
B[3] := 'mejor';
Foo([A, B]);
end;
// Saludos
cloayza
06-09-2012, 16:41:31
Podría ser
type
TArrayString=array of array of string;
procedure TForm3.Button2Click(Sender: TObject);
var
AValues:TArrayString;
i,j:Integer;
begin
{Dimensionas la matriz 2x3}
SetLength(AValues,2,3);
{asignas valores}
for i := Low(AValues) to High(AValues) do
for j := Low(AValues[i]) to High(AValues[i]) do
AValues[i,j]:=IntToStr(i*j);
{Procesa la matriz: la tira a un tmemo}
FncString(AValues);
end;
procedure TForm3.FncString(AValues:TArrayString);
var i,j:Integer;
begin
for i := Low(AValues) to High(AValues) do
for j := Low(AValues[i]) to High(AValues[i]) do
Memo1.Lines.Add(Format('AValue(%d,%d)=%s',[i,j,AValues[i,j]]));
end;
Saludos cordiales
fcios
07-09-2012, 00:33:09
Gracias Roman y cloayza
pero la idea es poder llamarla sin tener que andar definiendo una matriz antes de llamarla
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.