Ver Mensaje Individual
  #4  
Antiguo 04-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Solo una aclaración sobre la devolución de arreglos dinámicos. Como está escrita la funcion ObtenerArreglo en el mensaje de BDWONG, no se obtendría una copia del arreglo sino un apuntador al arreglo como se puede comprobar con este ejemplo:

Código Delphi [-]
program Project2; {$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TArray = array of Integer;

var
  vec: TArray;

// Devuelve apuntador
function RetArrayPtr: TArray;
begin
  Result:= vec;
end;

// Devuelve copia
function RetArray: TArray;
begin
  SetLength(Result, Length(vec));
  move(vec[0], Result[0], Length(vec)*Sizeof(Integer));
end;

var
  v1,v2: TArray;
  i: Integer;
begin
  SetLength(vec, 10);
  for i:= 0 to 9 do vec[i]:= i;

  v1:= RetArrayPtr;
  v2:= RetArray;

  Write('v1, apuntador:');
  for i:= 0 to 9 do write(v1[i]:3);
  Writeln;
  Write('v2, copia    :');
  for i:= 0 to 9 do write(v2[i]:3);
  Writeln;

  vec[0]:= 99;
  Writeln(#10#13+'Luego de modificar arreglo original'+#10#13);
  Write('v1, apuntador:');
  for i:= 0 to 9 do write(v1[i]:3);
  Writeln;
  Write('v2, copia    :');
  for i:= 0 to 9 do write(v2[i]:3);

  Finalize(vec);
  Finalize(v1);
  Finalize(v2);
  Readln;
end.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita