Public als Parameter
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Public als Parameter
Hi,
wozu gibt man eine Public Variable als Parameter und dann auch noch als Rückgabe an? Das erschließt sich mir nicht.
wozu gibt man eine Public Variable als Parameter und dann auch noch als Rückgabe an? Das erschließt sich mir nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Hans Zethofer
- Rekursionen-Architekt
- Beiträge: 278
- Registriert: Fr, 27. Jan 2006 8:29
- Wohnort: 2700 Wiener Neustadt
- Hat sich bedankt: 1 Mal
- Kontaktdaten:
Re: Public als Parameter
vielleicht wegen der Lesbarkeit des Programmes ?
oder Sie war Ursprünglich nicht Public und wurde im Laufe der Entwicklung Public
(wurde aber dann nicht aus dem Sourcecode wieder konsequent entfernt)
Es gibt im Laufe eines Programmlebens sicher mehrere solcher Fälle die mehr als unlogisch erscheinen.
oder Sie war Ursprünglich nicht Public und wurde im Laufe der Entwicklung Public
(wurde aber dann nicht aus dem Sourcecode wieder konsequent entfernt)
Es gibt im Laufe eines Programmlebens sicher mehrere solcher Fälle die mehr als unlogisch erscheinen.
_____________
lg
Hans
lg
Hans
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Public als Parameter
hi
meinst du so eine Konstruktion
meinst du so eine Konstruktion
Code: Alles auswählen
MEMVAR A
PROCEDURE MAIN
PUBLIC A := 1
? WasSollDas(a)
? a
WAIT
RETURN
FUNCTION WasSollDas(a)
// als parameter ist A dann LOCAL
? a += 10
RETURN a
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Public als Parameter
Ich denke so ist es gemacht worden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Public als Parameter
Ja wie das Resultat? Keine Ahnung. Mir ist es nur bei der Sichtung des Codes aufgefallen und ich habe mich gefragt, wozu das gut sein soll.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Public als Parameter
Ich könnte mir vorstellen, daß das Kollisionen geben könnte. Denn die übergebene Variable ist ja erstmal local. Beschrieben werden soll aber die public. Natürlich wird die geänderte local auch wieder zurückgegeben und landet damit recht sicher wieder in der public. Aber meine Hand dafür ins Feuer legen würde ich nicht unbedingt, das kommt immer darauf an, was in dem aufrufenden Programm sonst noch so passiert.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Public als Parameter
Ja, man sollte grundsätzlich nicht mit PUBLIC Variablen arbeiten und wenn doch, dann nur mit wenigen mit einemrleicht zu erkennenden Bezeichnung .Jan hat geschrieben:Ich könnte mir vorstellen, daß das Kollisionen geben könnte. Denn die übergebene Variable ist ja erstmal local. Beschrieben werden soll aber die public. Natürlich wird die geänderte local auch wieder zurückgegeben und landet damit recht sicher wieder in der public. Aber meine Hand dafür ins Feuer legen würde ich nicht unbedingt, das kommt immer darauf an, was in dem aufrufenden Programm sonst noch so passiert.
Jan
Aber wie kommst Du darauf, dass die local wieder in der public landet und was meinst Du damit?
Jimmy, wie kommt es, dass Du es nicht selbst herausbekommstJimmy hat geschrieben:...ok ... und das Resultat ?Code: Alles auswählen
MEMVAR A PROCEDURE MAIN PUBLIC A := 1 ? WasSollDas(a) ? a WAIT RETURN FUNCTION WasSollDas(a) // als parameter ist A dann LOCAL ? a += 10 RETURN a
Der Public-Variable A wird zu Beginn 1 zugewiesen und da dieser Wert nie verändert wird, hat die Public-Variable A auch bei Programmende den Wert 1 .
Die Funktion WasSollDas(a) hat einen Parameter, der a genannt worden ist. Das bedeutet, dass innerhalb der Funktion auf andere PUBLIC oder PRIVATE Variablen, die ebenfalls a heißen, nicht zugegriffen werden kann und damit diese nicht verändert werden können.
Also wird bei
Code: Alles auswählen
? WasSollDas(a)
Code: Alles auswählen
? a
-------
Besonders interessant und chaotisch ist der folgende Fall:
Code: Alles auswählen
Z1 FUNCTION WasSollDas(a)
Z2 // als parameter ist A dann LOCAL
Z3 ? a += 10
Z4 ? WasSollDies( a )
Z5 RETURN a
Z6
Z7 FUNCTION WasSollDies(b)
Z8 ? a := b+100
Z9 RETURN b+9
Das Ergebnis ist
- 11 // Z3
111 // Z8
20 // Z4
11 // Ergebnis von Z5
111 // Wert von a am Ende des Programms
Alles ungetestet und nur im Kopf gerechnet. Also korrigiert mich bei Fehlern .
Uli
Edit: habe ein paar Mal im Kopf nachgerechnet und die Ergebnistabelle korrigiert...
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Public als Parameter
Uli,UliTs hat geschrieben:Ja, man sollte grundsätzlich nicht mit PUBLIC Variablen arbeiten und wenn doch, dann nur mit wenigen mit einemrleicht zu erkennenden Bezeichnung .
Aber wie kommst Du darauf, dass die local wieder in der public landet und was meinst Du damit?
stimmt, eine ordentliche Benamung der Variablen ist immer von Vorteil.
Was ich meinte ist: Es ist nicht sicher, daß die local in die public übernommen wird. In dem zitierten Beispiel wird zwar die local zurückgegeben. Wenn aber im aufrufenden Code kein
Code: Alles auswählen
a := wassolldas(a)
Code: Alles auswählen
wassolldas(a)
Irgendwie muß ich mal ausprobieren, was da wirklich passiert .... Aber riskant ist diese Vorgehensweise sehr sicher. Und verwirrend sowieso.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.