Seite 1 von 1

Protected

Verfasst: 19.08.2006 18:23
von kajott
Hi,

was für einen Status haben eigentlich Variablen , die ich im Kopf einer Prozedur übergebe?

z.B.

Code: Alles auswählen

Procedure target(x.l, y.l)

Was sind in diesem Falle x und y ? Protected?

Verfasst: 19.08.2006 18:31
von Macros
Alles was du innerhalb der Procedur mit ihnen machst,
hat keinen Einfluss auf die Variablen im Hauptprogramm.

Verfasst: 19.08.2006 18:52
von kajott
Herzlichen Dank!

Verfasst: 19.08.2006 18:56
von AND51
Wenn ich so ins Blaue denke, sind die übergebenen Variablen Protected. Allerdings sind die in deinem Beispiel NICHT null, da du beim Aufruf der Procedure Werte übergeben MUSST.

Code: Alles auswählen

Procedure Beispiel()

Protected ich.s, zahl.l
Diese protected Variablen sind nullinitalisiert, das heißt: ich.s = "" und zahl.l ist von Anfang an 0.

Verfasst: 20.08.2006 13:57
von Tafkadasom2k5
(Ich weiß ned, ob das schon im Forum dikustiert wurde, aber es passt gerade hier hinein..)

Gibt es sowas wie BYREF oder BYCOPY in PB?
Wenn ich das richtig verstehe, dann werden normale Variablen alle ByVal übergeben...

Gr33tz
Tafkadasom2k5

Verfasst: 20.08.2006 14:02
von #NULL

Code: Alles auswählen

foo(var)  ; <- in der proc hast du dann eine unabhängige/protected variable
              ;mit dem inhalt (wert) von dieser variable 'var'. (copy)

foo(@var)  ; <- by ref: du kannst in der proc über die erhaltene addresse auf
                ;den inhalt der ursprünglichen variable 'var' zugreifen und ihn modifizieren 
               ;(der pointer in der proc ist selbst aber dennoch protected)
<edit:>
>>Wenn ich das richtig verstehe, dann werden normale Variablen alle ByVal übergeben...
pointer werden auch by value übergeben. wie es mit arrays/LLs ist weiß ich nicht genau. ein array ohne indices/ nur klammern wird glaub ich by reference übergeben..und LLs glaub in PB4 ich auch.

Verfasst: 20.08.2006 14:49
von mk-soft
Strukturen, Arrays und LL werden BYREF übergeben.

Foo(@*var) -> Adresse auf den Pointer. Braucht man manchmal bei Objekten.

FF :wink:

Verfasst: 20.08.2006 15:00
von #NULL
ich muß mich nochmal korrigieren:
bei meinem zweiten peispiel wird eigentlich auch by value übergeben, wobei der value eben nur eine addresse ist. das @ wird ja auf den identifier angewand, bevor die proc aufgerufen wird.

Verfasst: 21.08.2006 10:02
von Tafkadasom2k5
mk-soft hat geschrieben:Strukturen, Arrays und LL werden BYREF übergeben.
Wäre auch verdammt umständlich, wenn nicht -.-