Absolut und Referenz: nichts geht mehr

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 101
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Absolut und Referenz: nichts geht mehr

Beitrag von GrillenHirni » Mo, 29. Apr 2019 21:20

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

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2325
Registriert: Fr, 08. Feb 2008 21:29

Re: Absolut und Referenz: nichts geht mehr

Beitrag von georg » Mo, 29. Apr 2019 21:40

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.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 101
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Re: Absolut und Referenz: nichts geht mehr

Beitrag von GrillenHirni » Mo, 29. Apr 2019 22:10

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

GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 101
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Re: Absolut und Referenz: nichts geht mehr

Beitrag von GrillenHirni » Mo, 29. Apr 2019 22:50

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

Antworten