Page 1 sur 1

Problème mémoire avec #PB_String_NoZero

Publié : mer. 09/mars/2016 19:23
par Shadow
Salut,

#PB_String_NoZero ne fonctionne pas chez moi, pourquoi ? :?

Code : Tout sélectionner

Chaine$ = "ABCDEF"

Global *MemoireIDChaine = AllocateMemory(7)

If Not *MemoireIDChaine
  Debug "Impossible d'allouer la mémoire demandée !"
  End
EndIf

Position = 6

For I = 1 To 6
  PokeS(*MemoireIDChaine - Position, Mid(Chaine$, I, 1))
  Position - 1
Next

Debug PeekS(*MemoireIDChaine, -1, #PB_Ascii | #PB_String_NoZero)
Se que je voudrait et rien d'autre, c'est écrire dans la mémoire à partir de la fin.
Je ne peut pas le faire avec PB car il inclue le caractère Null à la fin.

Je sais que je peut faire comme ça mais c'est pas se que je veux car je veux limiter au maximum les oppérations.

Code : Tout sélectionner

Chaine$ = "ABCDEF"

Global *MemoireIDChaine = AllocateMemory(7)

If Not *MemoireIDChaine
  Debug "Impossible d'allouer la mémoire demandée !"
  End
EndIf

Position = 6

For I = 1 To 6
  PokeS(*MemoireIDChaine, Mid(Chaine$, I, 1) + PeekS(*MemoireIDChaine))
Next

Debug PeekS(*MemoireIDChaine)

Re: Problème mémoire avec #PB_String_NoZero

Publié : jeu. 10/mars/2016 12:08
par Mesa
Voir la fonction PB: Resultat$ = ReverseString(Chaine$)

Code : Tout sélectionner

Chaine$ = "ABCDEF"

; PUREBASIC A UNE FONCTION POUR ÇA: Resultat$ = ReverseString(Chaine$)
Debug ReverseString(Chaine$)


;SINON EN PASSANT PAR LES PEEK ET LES POKE
Global *MemoireIDChaine = AllocateMemory(Len(Chaine$)+1); prévoir le 0 final car on utilisera peeks pour lire la chaine

If Not *MemoireIDChaine
  Debug "Impossible d'allouer la mémoire demandée !"
  End
EndIf

Position = 0

For I = Len(Chaine$)-1 To 0 Step -1
  ;Debug PeekA(@Chaine$+I)
  PokeA(*MemoireIDChaine + Position, PeekA(@Chaine$+I))
  Position + 1
Next

Debug PeekS(*MemoireIDChaine, -1, #PB_Ascii )
M.

Re: Problème mémoire avec #PB_String_NoZero

Publié : jeu. 10/mars/2016 18:23
par Shadow
Merci Mesa ;)

Pour ReverseString, je sais mais c'est pas se que je veux, je cherche de l'optimisation, vitesse... pour un de mes code.
Pour ton exemple j'ai vue, je t'en remercie :)

Cependant cela ne résous pas ma question pour autant :?
Pourquoi #PB_String_NoZero ne marche pas ???

Comment l'utiliser ?