Seite 1 von 1

Absolut und Referenz: nichts geht mehr

Verfasst: Mo, 29. Apr 2019 21:20
von GrillenHirni
Guten Abend Ihr Lieben

Vor lauter Wald sehe ich wieder einmal die Bäume nicht mehr.

Ich habe ein Objekt

oOjbekt

mit einigen MemberVariabeln - darunter auch Arrays:

oObjekt:aArray

Mit dem Objekt als Parameter rufe ich eine FUNCTION auf:

lReturn:=FUNCTION(oObjekt)

In der FUNCTION weise ich einem Element des Arrays einen neuen Wert zu:

oObjekt:aArray[nElement]:=1


Was ich nicht erwartet hätte: beim Verlassen der FUNCTION geht der Wert
verloren.

Gibt es eine Möglichkeit, für eine gültige Zuweisung, welche dann auch in der
aufrufenden FUNCTION erhalten bleibt?

Ich wünsche ein spannendes EntwicklerTreffen in Münster und eine gute Nacht
Grilli

Re: Absolut und Referenz: nichts geht mehr

Verfasst: Mo, 29. Apr 2019 21:40
von georg
Hallo, Peter -


also, das funktioniert, wie man hier sieht:

Code: Alles auswählen

FUNCTION Main()
	Local oDemo

	oDemo := Demo():new()
	oDemo:aHugo[2] := "Fritz"
	?oDemo:aHugo[2]
	SwitchMe(oDemo)
	?oDemo:aHugo[2]
	WAIT	
RETURN (.T.)

FUNCTION SwitchMe(oObj)
	oObj:aHugo[2] := "Erwin"
RETURN (.T.)

CLASS Demo
	EXPORTED:
	VAR aHugo
	METHOD init
ENDCLASS

METHOD Demo:init()
	self:aHugo := Array(3)
RETURN (Self)
Objekte und Arrays werden immer per Reference übergeben, und nicht per Value. Vielleicht solltest Du noch einmal in Deinen Code schauen? Ich vermute, dass da etwas anderes passiert.

Re: Absolut und Referenz: nichts geht mehr

Verfasst: Mo, 29. Apr 2019 22:10
von GrillenHirni
Hallo Georg

Ja das ist wieder mal so ein Fall, der überall funktioniert, nur bei
mir nicht...

Anscheinend passiert in meinem Code tatsächlich etwas anderes,
aber wo, warum, was...?

Die Struktur, an die ich in der aufgerufenen FUNCTION die Zuweisung
mache ist

aoObjekte[nObjekt]:aoObjekte[nObjekt]:Value:=Value

Bis zum Ausgang der FUNCTION - also bis zur Anweisung RETURN
ist der Wert ok. Nach dem Rücksprung in die aufrufende FUNCTION
ist er futsch - respektive wie er da vorher war...

Herzliche Grüsse
Grilli

Re: Absolut und Referenz: nichts geht mehr

Verfasst: Mo, 29. Apr 2019 22:50
von GrillenHirni
Ui...

Wenn ich den Aufruf mit dem ReferenzOperator mache

lReturn:=FUNCTION(@aObjekte)

ist der Wert noch da.

Ich dachte, ich hätte das schon ausprobiert, aber da den
RefernzOperator am falschen Parameter (es hat in der
praktischen Version noch mehr) angebracht.

Ausserdem hab ich hier im Forum auch schon mal was
gelesen darüber, aber den Beitrag nicht in den Zusammenhang
mit meinem Problem gebracht.

Verstehen tu ich es allerdings nicht. Anscheinend wird die
zweite ElementEbene von aoObjekte nicht so ganz
referenziert behandelt?

Also nochmals herzlichen Dank, Georg und gute Nachtruhe...
Grilli