[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Any easy way to change a string ? and a bug (or maybe a feature ?)


On 10/14/24 08:19, Laurent Carlier wrote:
For example:

DIM myString as String ="RETUIOPLJBDNLQSXNKNSXKSXKBSKXKBBB"

I would like to change the 10th character, replacing it with another. I can't
find an easy way to do it.

Is it a bug ?:

DIM myByte as Byte = &hFF&
DIM myString as String = "test string :"

myString &= CStr(myByte)

gives "test string :0\x00FF" instead of "test string :0\xFF", Byte is
converted to a Short value, so unusual. As a workaround, i use chr$(myByte)

Regards,
Laurent Carlier

--
I am pretty sure Ben would not like this but....
When I am using a string as a buffer I use the following function to modify it and resend it, It works with &hff as well

_________________
' Gambas module file

Extern memcpy(src As String, dest As String, len As Integer) As Pointer In "libc:6"

'' Position is 0  relative not 1, value may be numeric or a single character string
Public Sub setChar(var As String, value As Variant, position As Integer)

    Dim myValue As Byte
    Dim myPtr As Pointer

    If position < 0 Or position >= var.len Then
        Error.Raise(("Specified position out of bounds"))
    Endif
    If TypeOf(value) = gb.string Then
        myValue = CByte(Asc(value[0]))
    Else
        myValue = CByte(value)
    Endif
    myPtr = memcpy(var, var, 0)
    Byte@(myPtr + position) = myValue

End

Public Sub Main()

    Dim a As String = "hello world"

    Print a
    setChar(a, "g", 1)
    Print a
    setChar(a, &hff, 4)
    Print a

End
--------------- Output is
hello world
hgllo world
hgll? world
--------------- end output

I hope this helps and not confuses... works for me as needed

~~~~ Brian

Attachment: OpenPGP_0x78BFB26402F48419.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature


Follow-Ups:
Re: Any easy way to change a string ? and a bug (or maybe a feature ?)Benoît Minisini <benoit.minisini@xxxxxxxxxxxxxxxx>
References:
Any easy way to change a string ? and a bug (or maybe a feature ?)Laurent Carlier <lordheavym@xxxxxxxxx>