Problème mémoire avec #PB_String_NoZero

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
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)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Mesa
Messages : 1126
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.
Shadow
Messages : 1413
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 ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre