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
Absolut und Referenz: nichts geht mehr
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 18. Jul 2013 11:56
- Kontaktdaten:
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Absolut und Referenz: nichts geht mehr
Hallo, Peter -
also, das funktioniert, wie man hier sieht:
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.
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)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 18. Jul 2013 11:56
- Kontaktdaten:
Re: Absolut und Referenz: nichts geht mehr
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
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
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 18. Jul 2013 11:56
- Kontaktdaten:
Re: Absolut und Referenz: nichts geht mehr
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
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