Nochmal zu Arrays als Parameter
Leider wurde der Originalthread bereits geschlossen, so dass ich hier noch einmal Stellung beziehen möchte. Arrays werden definitiv nicht automatisch By Reference übergeben, im Gegensatz zu Objektinstanzen (welche ja intern eigentlich Pointer sind). Kleines Testprogramm:
Delphi-Quellcode:
Sry für den neuen Thread, aber ich wollte das einfach klargestellt haben ;)
type
TTestArray = array[0..1] of string; //2 Routinen mit offenen Array-Parametern procedure ChangeArray1(Arr: array of string); begin if Length(Arr) > 0 then Arr[0] := 'Wuppdi'; end; procedure ChangeArray2(var Arr: array of string); begin if Length(Arr) > 0 then Arr[0] := 'Wuppdi'; end; //Und 2 Routinen mit typisierten Array-Parametern procedure ChangeArray3(Arr: TTestArray); begin Arr[0] := 'Wuppdi'; end; procedure ChangeArray4(var Arr: TTestArray); begin Arr[0] := 'Wuppdi'; end; procedure TForm1.Button1Click(Sender: TObject); var TestArr: array[0..1] of string; TestArr2: TTestArray; begin TestArr[0] := 'Dideldum'; TestArr2[0] := 'Dideldum'; ShowMessage('Original TestArr: ' + TestArr[0]); ChangeArray1(TestArr); ShowMessage('Nach Call By Value: ' + TestArr[0]); ChangeArray2(TestArr); ShowMessage('Nach Call By Reference: ' + TestArr[0]); //nun das typisierte Array ShowMessage('Original TestArr2: ' + TestArr2[0]); ChangeArray1(TestArr2); ShowMessage('Nach Call By Value: ' + TestArr2[0]); ChangeArray2(TestArr2); ShowMessage('Nach Call By Reference: ' + TestArr2[0]); end; |
AW: Nochmal zu Arrays als Parameter
@DeddyH
dafür hatte ich ja den Spielcode, mit der Aufforderung solange zu probieren bis nichts mehr geht, eingestellt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 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