Page 1 sur 1
SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 9:01
par erhk
Bonjour,
Avec le code suivant :
Code : Tout sélectionner
NewList MaListe.s()
AddElement(MaListe())
MaListe() = "Pb"
AddElement(MaListe())
MaListe() = "BZ"
AddElement(MaListe())
MaListe() = "BA"
AddElement(MaListe())
MaListe() = "Ba"
SortList(MaListe(), #PB_Sort_Ascending | #PB_Sort_NoCase)
ForEach MaListe()
Debug MaListe()
Next
je pensais obtenir : "BA", "Ba", "BZ", "Pb"
or, j'obtiens : "BA", "BZ", "Ba", "Pb"
Qu'est ce que je n'ai pas compris ?
Merci.
Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 9:37
par MLD
@ erhk
Regarde la correspondance des lettres avec le code ASCII et tu vas comprendre.
Mais avec #PB_Sort_NoCase ceci fonctionne chez moi ?
soit BA Ba BZ Pb
Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 9:39
par Micoute
Bonjour erhk,
il ne faut pas mettre #PB_Sort_NoCase, car dans ce cas PB ne tient pas compte de la casse.
Code : Tout sélectionner
NewList MaListe.s()
AddElement(MaListe())
MaListe() = "Pb"
AddElement(MaListe())
MaListe() = "BZ"
AddElement(MaListe())
MaListe() = "BA"
AddElement(MaListe())
MaListe() = "Ba"
SortList(MaListe(), #PB_Sort_Ascending)
ForEach MaListe()
Debug MaListe()
Next
Tiens compte du conseil de MLD que je salue au passage !
Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 9:48
par MLD
@ Micoute
Bonne fêtes de fin d'année a mon voisin d'en face

Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 10:17
par erhk
Merci pour vos réponses. Mais je ne comprends toujours pas.
@ MLD
Oui, oui en ASCII les majuscules sont avant les minuscules. (Je compile en unicode, mais je pense que cela ne change rien)
Manifestement, avec le même code nous n'obtenons pas le même résultat !
@ Micoute
"#PB_Sort_NoCase ne tient pas compte de la casse" : c'est justement ce que je veux, mais avec ou sans #PB_Sort_NoCase j'obtiens le même résultat.
Problème spécifique à Linux ?
Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 10:33
par MLD
@erhk
Fait un essai en compilant sans unicode.c'est certainement le problème.

Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 11:10
par erhk
@ MLD
Bingo ! Cela vient bien de l'unicode.
Ce qui me pose un sérieux problème, puisque pour trier je doit désactiver l'unicode, mais dans le même programme j'ai besoin qu'il soit activer pour lire correctement mes données accentuées.
Est-ce possible de basculer de l'un à l'autre par programmation ?
Merci, par avance, pour toutes pistes pouvant m'aider.
Re: SortList et #PB_Sort_NoCase
Publié : dim. 22/déc./2013 12:00
par MLD
@erhk
La table ASCII comprend en principe les lettres accentuées (donc pourquoi l'unicode?).
Mais que le tri ne fonctionne pas avec l'unicode me parait une anomalie voir un BUG???
Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 11:08
par erhk
De nouveau Bonjour,
et Bonne Année à tous.
Je me permets de relancer le sujet en faisant un petit récapitulatif de mes essais.
Donc en utilisant le code suivant :
Code : Tout sélectionner
NewList MaListe.s()
AddElement(MaListe())
MaListe() = "Pb"
AddElement(MaListe())
MaListe() = "BZ"
AddElement(MaListe())
MaListe() = "BA"
AddElement(MaListe())
MaListe() = "Ba"
SortList(MaListe(), #PB_Sort_Ascending | #PB_Sort_NoCase)
ForEach MaListe()
Debug MaListe()
Next
J'obtiens les résultats suivants :
Sous Windows 7 pro 64 bits SP1 (VirtualBox)
avec support Unicode activé ou non (option compilateur)
BA, Ba, BZ, Pb
Sous Xubuntu 13.04 64 bits
avec support Unicode désactivé
BA, Ba, BZ, Pb
Sous Xubuntu 13.04 64 bits
avec support Unicode activé
BA, BZ, Ba, Pb
Pour lire correctement les données en provenance de fichiers créés et alimentés manuellement par WordPad / MousePad :
Sous Windows, le support Unicode doit être désactivé.
Sous Xubuntu, le support Unicode doit être activé.
Voilà, voilà, à votre avis bug à signaler ou pas ?
Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 11:12
par Ar-S
Et ainsi tu obtiens quoi ?
SortList(MaListe(), #PB_Sort_NoCase)
Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 11:20
par erhk
Ouf ! Quelle rapidité !
Avec Unicode
BA, BZ, Ba, Pb
Sans
BA, Ba, BZ, Pb
Pareil donc, ce qui semble normal le tri ascendant étant l'option par défaut.
Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 11:26
par erhk
En tri descendant ça marche !?
Pb, BZ, BA, Ba avec ou sans Unicode
Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 11:34
par Ar-S
Attend peut-être d'autres avis sinon post ton exemple sur le fofo anglais
ça sent tout de même un peu le bug sous linux.
Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 11:48
par erhk
Merci pour tes réponses.
OK j'attends d'autres avis.
Quant au forum anglais, comme je pense déjà avoir eu l'occasion de l'écrire ici même pour une autre occasion, je connais pas mal de vaches espagnoles qui s'en sortent beaucoup mieux en anglais que moi !
Et oui, je suis un ancien !

Re: SortList et #PB_Sort_NoCase
Publié : jeu. 09/janv./2014 12:18
par Fig
L'idéal serait de tout basculer en ASCII comme ça pas de problème... (à la condition que ton texte soit en Français, tu auras tout les caractères accentués)
Tu peux utiliser ce genre de manip:
1- tu lis l'unicode.
2- tu convertis l'unicode en Ascii avec des poke et des peek (
3- tu tris.
Pour le point 2 tu peux utiliser ce genre de code: (voir #PB_Ascii, #PB_UNICODE et #PB_UTF8 ...)
Code : Tout sélectionner
If Len(chainedecaractere$)>0
*mem=AllocateMemory(Len(chainedecaractere$)*4)
PokeS(*mem,chainedecaractere$,-1,#PB_Ascii)
chainedecaractere$=PeekS(*membase,-1,#PB_Ascii)
FreeMemory(*mem)
EndIf