Seite 1 von 1

Pointer klappt nicht

Verfasst: 21.03.2005 17:42
von Franky
Hi

Es will mal wieder net /:->

Ich will mittels Pointer die adresse eines Strings übergeben (ich hoffe, dat is jetzt richtig erklärt)


So sieht die Procedure aus

Code: Alles auswählen

Procedure Instring(*string.BYTE,usepos.l)       
       If *string=0
            MessageRequester("Is ja klar","So kann das net gehen")
       EndIf
EndProcedure
Und so wirds jeweils übergeben

Code: Alles auswählen

If Instring(@proctext,procpos)=0
Nun, wat soll ich sagen, *string ist immer 0

Verfasst: 21.03.2005 17:49
von DarkDragon
bei mir ist es nie 0 :?

Code: Alles auswählen

Procedure Instring(*str)
       If *str=0
            MessageRequester("Is ja klar","So kann das net gehen")
       EndIf
EndProcedure

txt.s = "Hallo"
Instring(@txt)
[EDIT] achja: antworte im icq mal

Re: Pointer klappt nicht

Verfasst: 21.03.2005 20:17
von PMV
Hm, bei mir gehts O_o

MFG PMV

Verfasst: 26.03.2005 17:26
von Kaeru Gaman
also, mir kommt ja

Code: Alles auswählen

*string.BYTE
merkwürdig vor...

...müsste das nicht

Code: Alles auswählen

*string.s
heissen?

Verfasst: 26.03.2005 18:10
von MVXA
ne, weil man den String sonst nicht Byte für Byte abarbeiten kann.

Verfasst: 26.03.2005 18:15
von NicTheQuick
@Kaeru: Das hat schon seine Richtigkeit.
Zum Beispiel für schnelle Stringroutinen:

Code: Alles auswählen

Procedure Quersumme_ASCII(*string.BYTE)
  Protected Summe.l
  While *string\b
    Summe + *string\b & $FF
    *string + 1
  Wend
  ProcedureReturn Summe
EndProcedure

Debug Quersumme_ASCII(@"huhu")
; oder was lustiges
Debug Quersumme_ASCII(@"150")
Debug Quersumme_ASCII(@"159")
@Franky: Das scheint eine Unstimmigkeit in PureBasic zu sein. Schau mal hier. Ich hab den selben Fehler. Allerdings auch eine Lösung dafür. :mrgreen:

Code: Alles auswählen

Procedure Instring(*string.BYTE, usepos.l)       
  If *string=0
    MessageRequester("Is ja klar","So kann das net gehen")
  Else
    MessageRequester("Klar","So geht das")
  EndIf
EndProcedure 


procpos.l
proctext.s

Instring(@proctext, procpos)

proctext = ""
Instring(@proctext, procpos)
PS.: Mozilla Firefox ist echt bescheuert. Ich deinstallier das nochmal. Der kann ja noch net mal Smilies und Code-Tags so setzen wie es sein soll. /:->

Verfasst: 26.03.2005 18:21
von Deeem2031
Is doch klar, "proctext.s" sagt dem Compiler nur das die Variable "proctext" ein String sein soll, aber nicht das der String erstellt werden soll.. wozu denn auch, würde normalerweise nur Speed kosten. Und weil der String dann noch nicht existiert ist der Pointer darauf logischerweise 0.

Verfasst: 26.03.2005 19:45
von Kaeru Gaman
@Deeem

*handvordiestirnklatsch*

da muss man bei dem mini-schnipsel erstmal drauf kommen,
dass er die Var nicht vordefiniert hat...