Protected

Anfängerfragen zum Programmieren mit PureBasic.
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

Protected

Beitrag 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?
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Alles was du innerhalb der Procedur mit ihnen machst,
hat keinen Einfluss auf die Variablen im Hauptprogramm.
kajott
Beiträge: 35
Registriert: 21.11.2005 02:00

Beitrag von kajott »

Herzlichen Dank!
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Strukturen, Arrays und LL werden BYREF übergeben.

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

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

mk-soft hat geschrieben:Strukturen, Arrays und LL werden BYREF übergeben.
Wäre auch verdammt umständlich, wenn nicht -.-
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten