Page 1 sur 1

[v4 Beta 10] MemoryStringLength() et string [Résolu]

Publié : mer. 12/avr./2006 17:58
par Jacobus
Je n'arrive pas à faire passer une chaîne$ en paramètre, quel que soit le mode de compile ou d'option le résultat est le même.
Bad parameter type. Il veut absolument un number à la place d'un string.

Code : Tout sélectionner

chaine1$ = "Blabla"
  Buffer  = AllocateMemory(#MAXWORD)
  PokeS(*Buffer,chaine1$)  
  chaine2$ = "ReBla" 
  If chaine2$ <> MD5Fingerprint(*Buffer,MemoryStringLength(chaine1$,#PB_Ascii)
  ;If chaine2$ <> MemoryStringLength(chaine1$,#PB_UTF8)
  ;If chaine2$ <> MemoryStringLength(chaine1$,#PB_Unicode)
    Debug "different"
  Else 
    Debug "c'est incroyable ça!" 
  EndIf 
C'est bien MemoryStringLength() qui veut rien savoir et ce malgré ce qui est dit dans le Readme.html ou la Doc :roll:

A moins d'une erreur de ma part, ça bug. Pourriez vous confirmer dans un sens ou dans l'autre? merci.

Publié : mer. 12/avr./2006 21:30
par Flype
C'est pas un bug - c'est bien une erreur de ta part.

tu as Len(Chaine$) pour çà.

car MemoryStringLength(*Chaine,flag) prend un pointeur sur une chaîne de caractères, ce qui est très différent.

et puis tu as aussi oublié le '*' devant Buffer = AllocateMemory()

donc en gros ton example devrait plutot ressembler à çà :

Code : Tout sélectionner

chaine1$ = "Blabla" 
  *Buffer  = AllocateMemory(#MAXWORD) 
  PokeS(*Buffer,chaine1$)  
  chaine2$ = "ReBla" 
  If chaine2$ <> MD5Fingerprint(*Buffer,MemoryStringLength(*Buffer,#PB_Ascii))
  ;If chaine2$ <> MemoryStringLength(chaine1$,#PB_UTF8) 
  ;If chaine2$ <> MemoryStringLength(chaine1$,#PB_Unicode) 
    Debug "different" 
  Else 
    Debug "c'est incroyable ça!" 
  EndIf

Publié : jeu. 13/avr./2006 4:00
par Jacobus
:? Ok, on apprend tous les jours. Merci pour la correction.

Publié : jeu. 13/avr./2006 6:58
par Flype
ya pas de mal :wink: