Seite 1 von 1

Datentypen?

Verfasst: 28.09.2005 15:08
von Beforegod
Moin,

habe folgende Frage :

Ich kann den Datentype *var nicht zuordnen. Was ist das ? Byte?

Gruß,
Beforegod

Verfasst: 28.09.2005 15:15
von Kaeru Gaman
wenn du den kontext angeben würdest, könnte ich mehr damit anfangen...

steht der begriff so in der help?

so wie das aussieht, ist damit ein pointer auf eine variable gemeint.
vom typ her ist das long.

Verfasst: 28.09.2005 15:41
von Beforegod
hmm ne habe ich aus dem libmysql beispiel :

Code: Alles auswählen

    *mysqlrow = CallFunction(#libmysql, "mysql_fetch_row", *mysqlresult)
    *mysqllen = CallFunction(#libmysql, "mysql_fetch_lengths", *mysqlresult)
Gibt es einen Typ "byte" überhaupt in PureBasic?

Verfasst: 28.09.2005 15:56
von nicolaus
ja gibt es.

Code: Alles auswählen

variable.b
siehe auch hier
http://www.purearea.net/pb/german/manua ... ables.html

hoffe das hilft

Gruß Nico

Verfasst: 28.09.2005 16:02
von andi256
*mysqlrow

mit "*" kennzeichnet man Pointer....

kenn zwar da jetzt deine Anwendung nicht aber mit "*mysqlresult"
übergibst du einen Pointer auf einen Speicherblock... der richtig gesetzt sein muss....

und mit "*mysqlrow" erhälst du dann einen Pointer auf dein Ergebnis ...

um an den Wert zu kommen kannst du zb. mit

PeekB(*mysqlrow)
PeekW(*mysqlrow)
PeekL(*mysqlrow)

die Speicher auslesen

Andi256

PS.
pointer sind vom Type "long"

Verfasst: 28.09.2005 16:03
von Beforegod
Danke für die Hilfe ;)

Verfasst: 28.09.2005 16:44
von NicTheQuick
Das ist alles ziemlicher Unfug, der hier steht, bis auf die Links.

Wo gibt es denn noch dieses Pointer-Tutorial? Steht das nicht sogar in der
FAQ? Ich habe nämlich jetzt leider keine Zeit um das etwas ausführlicher
zu erklären. Aber da es schon öfter erklärt wurde, hilft die Suche im Board
ganz bestimmt.
Wozu bräuchte man denn Pointer, wenn sie das selbe wären wie Longs?

Noch ein kleiner Beispielcode, damit man sehen kann, was mit Pointern
möglich ist:

Code: Alles auswählen

Procedure ChangeString(*s.STRING)
  *s\s = "Geänderter String"
EndProcedure

; 4 Bytes
a.l

; Pointer diesen Speicherbereich zuweisen
*string.STRING = @a

; String an der Stelle des Pointers schreiben
*string\s = "Das ist ein String"

; Ausgeben
Debug *string\s

; Ändern
ChangeString(*string) ;oder: ChangeString(@a)

; Wieder ausgeben
Debug *string\s

Verfasst: 29.09.2005 07:45
von PAMKKKKK
Jo Nic, steht in der FAQ
Was sind Pointer:
http://forums.purebasic.com/german/viewtopic.php?t=19

Verfasst: 29.09.2005 14:30
von andi256
Das ist alles ziemlicher Unfug, der hier steht, bis auf die Links.
Tja ... :mrgreen:
Wozu bräuchte man denn Pointer, wenn sie das selbe wären wie Longs?
ich hab ja nicht geschrieben das pointer das selbe sind wie longs
pointer sind vom Type "long"
dh. sie werden mit 4Byte im Speicher abgelegt (=Type "long")

Code: Alles auswählen

a.s="s"
*pointer = @a
Debug *pointer
Debug PeekL(@*pointer)
PS.
so find ichs schöner:

Code: Alles auswählen

Procedure ChangeString1(*s.string) 
  *s\s = "Geänderter String" 
EndProcedure 

b.string
b\s = "Das ist ein String" 

*pointer = @b

Debug b\s 
ChangeString1(*pointer)
;ChangeString1(@b)

Debug b\s
Andi256