Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verständnisproblem Funktionen und call by value / call by reference (https://www.delphipraxis.net/155605-verstaendnisproblem-funktionen-und-call-value-call-reference.html)

Gargamel 31. Okt 2010 14:44

Delphi-Version: 2006

Verständnisproblem Funktionen und call by value / call by reference
 
Der Member Bummi zeigte mir diesen Quellcode:

Delphi-Quellcode:
procedure modifyMatrix(list:TArrayList);
Begin
  list[2,4]:=5;
end;


procedure TForm1.Button1Click(Sender: TObject);
var mylist:TArrayList;
begin

  setLength(myList,6,6);
  mylist[0,5]:=3;
  modifyMatrix(myList);

  label1.Caption:=inttostr(mylist[0,5]);
  label2.Caption:=inttostr(mylist[2,4]);

end;
Was ich nicht verstehe ist, warum die Prozedur modifyMatrix mylist verändert, obwohl weder ein Wert zurückgegeben noch als Parameter ein Zeiger übergeben wird. Soweit ich das in Erinnerung habe, konnte man die Beschränkung lokaler Variablen aufheben, wenn man als Parameter einen Zeiger übergibt.

xZise 31. Okt 2010 14:48

AW: Verständnisproblem Funktionen und call by value / call by reference
 
Moin,
in deinem Fall übergibst du aber indirekt einen Zeiger, da ein Array nur als Zeiger existiert. Ich hoffe ich rede da jetzt nicht Mist ;)

Wie sieht denn
Delphi-Quellcode:
TArrayList
aus?

MfG
Fabian

Bummi 31. Okt 2010 15:00

AW: Verständnisproblem Funktionen und call by value / call by reference
 
@Gargamel

Arrays und Objekte werden immer per Reference übergeben.


EDIT: so nicht richtig, die Zeiger werden übergeben.

Gargamel 31. Okt 2010 15:37

AW: Verständnisproblem Funktionen und call by value / call by reference
 
Achso, jetzt wird Licht. Danke. Das erklärt einiges.

@xZise:

type

TArrayList = array of array of integer;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz