Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Probleas con los arreglos (https://www.clubdelphi.com/foros/showthread.php?t=69603)

edgwin 27-08-2010 22:52:10

Probleas con los arreglos
 
Que tal amigos del foro.

Tengo un problema con los arreglos. Lo explico con un ejemplo de codigo:

Código Delphi [-]

TComp = class
  ...
  nombre : string;
  ...
end;

procedure Editar(out arreglo: array of TComp);//Donde TComp es una clase
var
  nvoArreglo : TComp
begin
  ...
  SetLength(nvoArreglo,10);
  ...
  nvoArreglo[inx].Nombre = 'Algo';
  ....
  arreglo := nvoArreglo; -->Aqui me marca el error de Tipos incompatibles.
end;

Pues eso, paso como parametro un object, realizo todo el manejo de las propiedades con una variable local del mismo tipo de objeto, pero al quere igualar la variable local con la del resultado del procedimiento me marca el error de "Incompatible Types: Dynamic Array and Array".

Alguna solucion?

Saludos!

cloayza 27-08-2010 23:32:52

Intente recrear la idea con algunas correcciones...

Código Delphi [-]
Type
  TComp = class
     nombre : string;
  end;

  TAComp=Array of TComp;
...

{Arreglo y nvoArreglo son del mismo tipo TAComp...}

procedure TForm4.Editar(out arreglo: TAComp);
var
  nvoArreglo : TAComp;
  i:integer;
begin
     {Solo es de una dimencion el vector...}
     SetLength(nvoArreglo,1);
    
    {Se crea la clase TComp...}
     nvoArreglo[0]:=TComp.Create;

    {Asigna valor a .Nombre}
     nvoArreglo[0].Nombre := 'Algo';

    
{//Para un vector de mas dimensiones...
     SetLength(nvoArreglo,10);
     For i:=Low(nvoArreglo) To High(nvoArreglo) Do
     begin
            nvoArreglo[i]:=TComp.Create;
            nvoArreglo[i].Nombre := 'Algo...'+Inttostr(i);
     End;
}

     {Al ser del mismo tipo TAComp se puede hacer la asignacion...}
     arreglo := nvoArreglo;
end;

procedure TForm4.Button1Click(Sender: TObject);
var
   Arreglo:TAComp;
begin
     Editar(Arreglo);
     ShowMessage(Arreglo[0].nombre);
end;

Saludos...


La franja horaria es GMT +2. Ahora son las 15:33:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi