Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Problème avec la commande 'sort'. | |
| | Auteur | Message |
---|
Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 8:21 | |
| Bonjour. Je viens de découvrir un problème avec la commande 'sort'. Lorsque j'utilise la commande 'sort_on', le nombre d'enregistrements de la seconde liste créée est inférieur à la 1ère liste !! Alors qu'il devrait être strictement égal. Par contre, si je remplace cette commande par 'sort' en fin de code, tout fonctionne parfaitement. Jack pourrait-il m'éclairer sur ce problème ? - Code:
-
dim k%, a$, y%
dlist 997 ' sort_on 997
dlist 4 file_load 4,"dico_français_anglais.txt"
' manger [sens: se nourrir de] (v) = essen for k%=1 to count(4) a$=item_read$(4,k%) if a$="ZZZ" then exit_for if mod(k%,1000)=0 then caption 0,"Création du dictionnaire anglais->français, mot n° "+str$(k%)+"/"+str$(count(4))+"." y%=instr(a$,"=") item_add 997,trim$(right_pos$(a$,y%+1))+" = "+trim$(left$(a$,y%-1)) next k% item_add 997,"ZZZ" sort 997 file_save 997,"dico_anglais_français.txt"
message str$(count(4))+":"+str$(count(997))
delete 4 delete 997 message "" | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 21:28 | |
| Bon, d'accord, ça s'adresse à Jack.
Mais c'est curieux, tu dis qu'il manque un élément dans le second Dlist alors qu'au contraire tu en ajoutes un: ( item_add 997,"ZZZ" ) avant de le trier ? Il devrait y en avoir un de trop, ou alors il en manque deux... (entre parenthèses, j'ai fait l'essai du Sort et du Sort_On pour exactement le même résultat).
Autant pour moi, j'ai parlé trop vite, je vois que tu sautes le ZZZ du Dlist d'origine (4) avant de le rajouter dans le Dlist de destination (997) donc ça s'équilibre. Ceci dit chez moi ça marche, avec différents fichiers texte de longueurs variables, ça dépend peut-être chez toi du contenu du fichier traité, un élément perturbateur...
PS effectivement, je fais l'essai avec un fichier dico_francais_anglais.txt (sans doute le même que toi, ou une version plus ancienne), - avec le SORT: 102400 -> 102400 - avec le SORT_ON: 102400 -> 102386, il en manque donc 14... Reste à aller à la pêche pour savoir quels sont ceux qui manquent... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 22:23 | |
| Utilise Notepad++ avec sa fonction de comparaison de fichiers... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 22:50 | |
| On peut aussi faire comme ceci pour trouver la ligne à partir de laquelle ça ne marche plus: (en fait une recopie du 1er Dlist tel quel dans le second sans aucun traitement avec le Sort_On, et on s'aperçoit qu'il manque des éléments en sortie): - Code:
-
dim k%,a$,b$,ap$,bp$,c$ dlist 4 dlist 997 sort_on 997
file_load 4,"C:\Textes\dico_français_anglais.txt" sort 4 print time$+" 4 : "+str$(count(4)) caption 0,"Création du dictionnaire anglais->français, "+str$(count(4))+" éléments." for k%=1 to count(4) a$=item_read$(4,k%) if a$="ZZZ" then exit_for item_add 997,a$ next k% item_add 997,"ZZZ" print time$+" 997 : "+str$(count(997))
FOR k% = 1 TO COUNT(4) a$ = ITEM_READ$(4,k%): b$ = ITEM_READ$(997,k%) IF a$ <> b$ c$ = "Ligne: "+str$(k%-1)+chr$(10)+"Dlist 4: "+ap$+chr$(10)+"Dlist 997: "+bp$ c$=c$+chr$(10)+chr$(10)+"Ligne: "+str$(k%)+chr$(10)+"Dlist 4: "+a$+chr$(10)+"Dlist 997: "+b$ MESSAGE c$ EXIT_FOR END_IF ap$ = a$: bp$ = b$ NEXT k% END et j'obtiens à la ligne 7666: Et, du coup, je m'aperçois que dans le fichier source certaines lignes consécutives sont identiques (voir l'image ci-dessus) ! est-ce que c'est celles-ci qui ne sont pas prises en compte par le Sort_On ??? J'ai dans mon fichier source: - Code:
-
art et essai (n as adj) = art-house (ligne 7665) art et essai (n as adj) = art-house (7666) art et essai (n as adj) = art-house (7667 Art et essai (n as adj) = art-house (7668) Art et essai (n as adj) = art-house (7669)
Dernière édition par JL35 le Jeu 10 Mar 2016 - 23:03, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 23:02 | |
| - Citation :
- sans aucun traitement avec le Sort_On
Si... tu as un SORT_ON sur l'objet 997. Mais tu as certainement raison de pointer des doublons qui sautent dans le cas de SORT_ON. EDIT Exact ! La preuve: - Code:
-
dlist 1 : sort_on 1 item_add 1,"test" item_add 1,"test" message "count(1)="+str$(count(1)) end Le doublon est tout simplement ignoré, dans message d'erreur. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 23:05 | |
| Je voulais dire 'sans aucun traitement' de la ligne lue (comme fait Pedro qui inverse les deux parties), mais avec le Sort_On, de façon à reconstituer un Dlist identique au Dlist source, pour pouvoir les comparer.
On s'est croisés Klaus, mais c'est sûrement ça, donc les deux traitements sont différents (Sort et Sort_On), si le Sort_On élimine les doublons. Ce qui est sans doute un avantage, mais il faut le savoir.
Dernière édition par JL35 le Jeu 10 Mar 2016 - 23:08, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 23:07 | |
| D'accord. Tu as vu le petit code de démo ? Il y a un bug dans la gestion des DLIST. Il faudrait qu'il y ait une erreur trappable d'exécution, ou alors que le doublon se mette à la suite. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec la commande 'sort'. Jeu 10 Mar 2016 - 23:14 | |
| On peut considérer ça comme un bug (le résultat devrait être de taille identique à l'origine), ou comme un avantage, si on l'utilise en connaissance de cause. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec la commande 'sort'. Ven 11 Mar 2016 - 0:02 | |
| - Code:
-
dim i font_bold 0
dlist 1 : sort_on 1 item_add 1,"test" item_add 1,"test" item_add 1,"salut" item_add 1,"salut" item_add 1,"test"
list 2 : sort_on 2 item_add 2,"test" item_add 2,"test" item_add 2,"salut" item_add 2,"salut" item_add 2,"test"
print_locate 200,10 : print "Les articles de DLIST" for i = 1 to count(1) print_locate 200,10+20*i : print item_read$(1,i) next i
print_locate 200,100 : print "Les articles de LIST" for i = 1 to count(2) print_locate 200,100+20*i : print item_read$(2,i) next i
print : print :print "SORT_ON élimine les doublons dans DLIST" print "et les conserve dans LIST"
| |
| | | Contenu sponsorisé
| Sujet: Re: Problème avec la commande 'sort'. | |
| |
| | | | Problème avec la commande 'sort'. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |