Seite 1 von 1

Was bedeuten * und \ im Zusammenhang mit einem Identifier?

Verfasst: 06.09.2017 11:19
von MikeHart
Ich habe zwar massig Erfahrung mit anderen Programmiersprachen, aber PureBasic benutze ich erst seit gestern um damit einen Codeeditor zu erstellen. Bin auf GoScintialla welches die Arbeit mit dem Scintilla Gadget vereinfachen soll.
Im source code finde ich Zeilen wie z.B. die folgende, welche sich mir noch nicht erschliesst.

Code: Alles auswählen

If *this And *this\callback And IsGadget(*this\id)
Dabei habe ich Fragezeichen bzgl. * und \ . In der Doku bin ich noch nicht drauf gestossen, insofern meine Frage. Was bedeuted *this und *this\callback? Ist *this die Adresse zu einem Object namens this? Und *this\Callback die Adresse des Feld Callback innerhalb des Objects this? Ich dachte bisher das PB nicht objektorientiert ist. Oder handelt es sich hier um eine Struktur namens this und deren Feld Callback?

Re: Was bedeuten * und \ im Zusammenhang mit einem Identifie

Verfasst: 06.09.2017 11:24
von NicTheQuick
Wenn du schon mit anderen Programmiersprachen zu tun hattest, dann formuliere ich es einfach:

Du hast eine Variable vom Typ Integer, kannst ihre Speicheradresse einem Pointer vom Typ Integer zuweisen und dann mit dem Pointer arbeiten.
In diesem Fall hat die Struktur 'Integer' genau ein Feld, nämlich 'i.i'. Mit dem Backslash kann man auf dieses Feld zugreifen.

Code: Alles auswählen

variable.i = 5
*pointer.Integer = @variable
Debug *pointer\i

Re: Was bedeuten * und \ im Zusammenhang mit einem Identifie

Verfasst: 06.09.2017 11:42
von MikeHart
Ok, * und @ erschliessen sich mir nun. Das mit dem \ habe ich noch nicht ganz verstanden, ich vermute weil i einmal der Variablentyp Integer darstellt und dann ein Feld in einer Struktur ist?!? Somit wären in meinem Beispiel Callabck und ID eigens definierten Variablentypen oder Felder?

Re: Was bedeuten * und \ im Zusammenhang mit einem Identifie

Verfasst: 06.09.2017 11:48
von NicTheQuick
Ja, das sind dann Felder. Siehe auch mein Video zu Strukturen und Interfaces. Die ersten paar Minuten sollten reichen.

Re: Was bedeuten * und \ im Zusammenhang mit einem Identifie

Verfasst: 06.09.2017 11:51
von MikeHart
Danke für Deine Hilfe, das werde ich mir heute Abend wenn ich von der Arbeit zurück bin, anschauen.

Im Prinzip sind ja die meisten Programmiersprachen ähnlich, unterscheiden sich dann aber doch in Kleinigkeiten.

Re: Was bedeuten * und \ im Zusammenhang mit einem Identifie

Verfasst: 06.09.2017 12:02
von NicTheQuick
Die Pointer bei Purebasic sind schon etwas speziell, das stimmt. Zum Beispiel gehört das Sternchen vor dem Variablennamen tatsächlich immer zum Namen dazu. Ohne Sternchen ist es eine normale Variable und hat einen eigenen Wert. Strukturfelder können auch Pointer sein, aber wenn man mittels Backslash auf sie zugreift, muss man das Sternchen weglassen. Das ist sehr inkonsequent und kann reichlich verwirren.

Das geht nicht:

Code: Alles auswählen

Structure test
	*pointer
	pointer.i
EndStructure
Das geht aber:

Code: Alles auswählen

Define *pointer = 1
Define pointer.i = 2
Debug *pointer
Debug pointer
Und hier die Sache mit dem Weglassen des Sternchens:

Code: Alles auswählen

Structure bar
	*pointer
EndStructure

Define foo.bar
foo\pointer = 3

Debug foo\pointer