Problème mémoire avec #PB_String_NoZero

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Shadow
Messages : 1439
Inscription : mer. 04/nov./2015 17:39

Problème mémoire avec #PB_String_NoZero

Message 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)
AMD Ryzen 9 5950X (16 cœurs, 32 threads, Socket AM4)
Gigabyte RTX 5090 WINDFORCE OC (32 Go GDDR7)
ASUS TUF GAMING B550-PRO (AM4, 4 slots RAM)
64 GB DDR4 3200 Mhz
Asus 24 Pouces: 1920 x 1080.
Système: Windows 10 64 Bits.

PureBasic: 6.30 beta 4 x64 Bits.
Mesa
Messages : 1147
Inscription : mer. 14/sept./2011 16:59

Re: Problème mémoire avec #PB_String_NoZero

Message 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.
Avatar de l’utilisateur
Shadow
Messages : 1439
Inscription : mer. 04/nov./2015 17:39

Re: Problème mémoire avec #PB_String_NoZero

Message 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 ?
AMD Ryzen 9 5950X (16 cœurs, 32 threads, Socket AM4)
Gigabyte RTX 5090 WINDFORCE OC (32 Go GDDR7)
ASUS TUF GAMING B550-PRO (AM4, 4 slots RAM)
64 GB DDR4 3200 Mhz
Asus 24 Pouces: 1920 x 1080.
Système: Windows 10 64 Bits.

PureBasic: 6.30 beta 4 x64 Bits.
Répondre