Einzelnen Beitrag anzeigen

Peter1999

Registriert seit: 13. Dez 2007
Ort: Dresden
88 Beiträge
 
Delphi XE2 Professional
 
#16

AW: Mehrdimensionalles Dynamisches Array Kopieren.

  Alt 11. Mär 2013, 14:05
Einmal musst du die Schleife trotzdem durchlaufen, denn Copy kopiert wie gesagt immer nur eine Dimension auf einmal.

Delphi-Quellcode:
type TIntArr2D = array of array of Integer;


function CopyIARR2D(aIArr: TIntArr2D): TIntArr2D;
var i: Integer;
begin
  Result := copy(aIArr);
  for i := 0 to high(Result) do
    Result[i] := copy(aIArr[i]);
end;

procedure TForm1.Button2Click(Sender: TObject);
var a,b,c,d: TIntArr2D;
begin
  setlength(a,5,5);
  a[2,2] := 5;
  a[3,3] := 1;
  b := copy(a);
  a[2,2] := 9;
  b[3,3] := 3;

  showmessage(inttostr(a[3,3])); // --> 3
  showmessage(inttostr(b[2,2])); // --> 9


//-----------------------------------------------
  setlength(c,5,5);
  c[2,2] := 5;
  c[3,3] := 1;
  d := CopyIArr2D(c);
  c[2,2] := 9;
  d[3,3] := 3;

  showmessage(inttostr(c[3,3])); // --> 1
  showmessage(inttostr(d[2,2])); // --> 5
end;
Andernfalls besteht die Gefahr, dass du dir dein "Orignial" veränderst, wenn du mit der "falschen" Kopie arbeitest, was ein gern gemachter Fehler ist und was man auch gern übersieht.

Viele Grüße...
  Mit Zitat antworten Zitat