• Welcome to Powerbasic Museum 2020-B.
 

News:

Forum in repository mode. No new members allowed.

Main Menu

Using Indexed String Pointers

Started by Theo Gottwald, December 31, 2010, 09:47:24 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Theo Gottwald

I found this one, deeply digged in the PB Forum.

Watch the use of the stringptr @c[]!

#COMPILE EXE
#DIM ALL
#REGISTER NONE

FUNCTION PBMAIN

    DIM a(2) AS STRING
    DIM b(4) AS STRING
    DIM c AS STRING POINTER

    a(0) = "a0"
    a(1) = "a1"
    a(2) = "a2"

    b(0) = "b0"
    b(1) = "b1"
    b(2) = "b2"
    b(3) = "b3"
    b(4) = "b4"

    ' c = a
    c = VARPTR(a(0))
    MSGBOX @c[1]
    ' Returns "a1"

    ' c = b
    c = VARPTR(b(0))
    MSGBOX @c[3]
    ' Returns "b3"

    ' Change b
    b(3) = "TEST"
    MSGBOX @c[3]
    ' Returns "Test"

END FUNCTION
 


Another example:

#COMPILE EXE
#DIM ALL
#REGISTER NONE

FUNCTION PBMAIN

    DIM a(2) AS STRING
    DIM b(2) AS STRING
    DIM c(2) AS STRING
    LOCAL pc AS DWORD POINTER : pc = VARPTR(c())

    a(0) = "a0"
    a(1) = "a1"
    a(2) = "a2"

    b(0) = "b0"
    b(1) = "b1"
    b(2) = "b2"

    @pc = VARPTR(b(0))
    MSGBOX c(2)
    ' Returns "b2"

    b(2) = "TEST"
    MSGBOX c(2)
    ' Returns "TEST"

    @pc = VARPTR(a(0))
    MSGBOX c(2)
    ' Returns "a2"

END FUNCTION