Seite 1 von 1

Kleine Frage zu Array als Procedure-Parameter

Verfasst: 04.09.2009 22:08
von K.Putt
Hallo,
ich nutze Arrays und habe nur eine kleine Verständnisfrage,
da ich sehr ungern globale Variablen oder Arrays bilde.

Folgendes Beispiel funktioniert ausgezeichnet, ich kann ein Array an andere Proceduren übergeben.
Gehe ich Recht in der Annahme, daß es sich fast wie eine Variable verhält - mit dem einzigen Unterschied, daß ich das Array auch ohne ProcedureReturn verändere?
Meine Frage dazu, warum funktioniert das so, eine Variable könnte ich auf diese Weise nicht einfach ändern.
Zweite Frage, gibt es irgendetwas wichtiges, daß ich dabei noch beachten sollte, außer, daß sich das 'Original-Array' bei Übergabe immer mitändert?

Danke vielmals!

Code: Alles auswählen

  
  Procedure PrintArray(Array myA1.s(1)) 
    For i = 0 To 2
      Debug myA1(i)
    Next i
  EndProcedure
  
  Procedure FillArray(Array myA2.s(1))
    myA2(0)="das"
    myA2(1)="funktioniert"
    myA2(2)="super"
  EndProcedure
  
  Procedure Main()
    Dim myArray.s(2)
    FillArray(myArray()) 
    PrintArray(myArray()) 
    ;Test noch einmal hier:
    For i = 0 To 2
      Debug myArray(i)
    Next i
  EndProcedure
  
  Main()

Verfasst: 04.09.2009 22:20
von ts-soft
Array wird ByReference übergeben, was bedeutet es wird ein Pointer zum
Orginal Array übergeben, somit auch die Orginalwerte verändert.

Prinzipiell ist es dasselbe, was man vorher immer per Pointer lösen mußte,
nur die Syntax ist jetzt etwas freundlicher und der Compiler kann besser
auf Fehler reagieren.

Hoffe mal das reicht als Erklärung,

gruß

Thomas

Verfasst: 04.09.2009 22:32
von K.Putt
Ausgezeichnet, danke Dir.
Ja, das ist wirklich einfach so - mit Pointern hatte ich das noch nie gemacht.