Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#20

AW: dynamische Array kopieren (letztes Element fehlt)

  Alt 25. Sep 2018, 15:09
Nur mal so am rande bedeutet das, dass folgendes das selbe macht
Nö - probier's doch einfach mal aus. Bei Fall 2 wird zwar innerhalb von KeyFooVal die Kopie "arr" verändert, nicht aber das Original "Keys" aus Main.
So sieht man's vielleicht deutlicher:
Delphi-Quellcode:
procedure Main;
var
  Keys: TStringDynArray;

  procedure KeyFooRef(var arr: TStringDynArray); //MIT VAR
  begin
    Setlength(arr, 4);
    arr[0] := 'Das';
    arr[1] := 'ist';
    arr[2] := 'ein';
    arr[3] := 'Test';
  end;

  procedure KeyFooVal(arr: TStringDynArray); // OHNE VAR
  begin
    Setlength(arr, 4);
    arr[0] := 'Das';
    arr[1] := 'ist';
    arr[2] := 'ein';
    arr[3] := 'Test';
  end;

  procedure Raus(AIndex: Integer; const arr: TStringDynArray);
  var
    i: Integer;
  begin
    Write(AIndex, ':');
    for i := Low(arr) to High(arr) do
      Write(' ', arr[i]);
    Writeln;
  end;

begin
  Raus(1, Keys);
  KeyFooRef(Keys); //Fall 1
  Raus(2, Keys);
  Keys := nil;
  Raus(3, Keys);
  KeyFooVal(Keys); //Fall 2
  Raus(4, Keys);
end;
Uli Gerhardt

Geändert von uligerhardt (25. Sep 2018 um 15:15 Uhr)
  Mit Zitat antworten Zitat