[RESOLU]StringByteLength pourquoi un point

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

[RESOLU]StringByteLength pourquoi un point

Message par doudouvs »

Vous savez pourquoi il y a un point entre chaque caractère ? alors que dans Texte il n'y en a pas.

Le but et de manipuler un string afin de récupérer les octets

Code : Tout sélectionner

 Texte.s = "Salut !!!"

  *mem = AllocateMemory(StringByteLength(Texte) + SizeOf(CHARACTER))
  CopyMemory(@Texte, *mem, StringByteLength(Texte) + SizeOf(CHARACTER))
  Debug MemorySize(*mem)
  Debug PeekS(*mem)
  ShowMemoryViewer(*mem, MemorySize(*mem))

Résultat :

Code : Tout sélectionner

000000000066DA98  53 00 61 00 6C 00 75 00 74 00 20 00 21 00 21 00  S.a.l.u.t. .!.!.
000000000066DAA8  21 00 00 00                                      !...

Dernière modification par doudouvs le ven. 03/janv./2020 14:08, modifié 1 fois.
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: StringByteLength pourquoi un point

Message par Marc56 »

Parce que par défaut le stockage des chaines en mémoire se fait en Unicode
https://www.purebasic.com/french/docume ... icode.html
Donc sur deux octets, ce qu'affiche ShowMemoryViewer()
:wink:
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: StringByteLength pourquoi un point

Message par doudouvs »

Merci Marc56 pour l'info et la Doc, du coup ça marche vraiment mieux

Code : Tout sélectionner

*Texte = Ascii("Salut !!!")
  ShowMemoryViewer(*Texte, MemorySize(*Texte))
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: [RESOLU]StringByteLength pourquoi un point

Message par doudouvs »

Oups j'ai parler trop vite il rajoute un point a la fin

Code : Tout sélectionner

000000000066CA68  53 61 6C 75 74 20 21 21 21 00                    Salut !!!.
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: [RESOLU]StringByteLength pourquoi un point

Message par doudouvs »

Grrr

Code : Tout sélectionner

  ShowMemoryViewer(*Texte, MemorySize(*Texte)-1)
Debug PeekS(*Texte, -1, #PB_Ascii)

La c'est tout BON

Code : Tout sélectionner

000000000066CA68  53 61 6C 75 74 20 21 21 21                       Salut !!!
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Répondre