Datentypen?

Anfängerfragen zum Programmieren mit PureBasic.
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Datentypen?

Beitrag von Beforegod »

Moin,

habe folgende Frage :

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

Gruß,
Beforegod
Diese Welt ist krank und ich bin es auch...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Beitrag 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?
Diese Welt ist krank und ich bin es auch...
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag 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
andi256
Beiträge: 100
Registriert: 06.11.2004 11:23
Computerausstattung: PB 5.30 (x64) Win7
Wohnort: Österreich

Beitrag 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"
Zuletzt geändert von andi256 am 28.09.2005 16:08, insgesamt 2-mal geändert.
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Beitrag von Beforegod »

Danke für die Hilfe ;)
Diese Welt ist krank und ich bin es auch...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Jo Nic, steht in der FAQ
Was sind Pointer:
http://forums.purebasic.com/german/viewtopic.php?t=19
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
andi256
Beiträge: 100
Registriert: 06.11.2004 11:23
Computerausstattung: PB 5.30 (x64) Win7
Wohnort: Österreich

Beitrag 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
Antworten