| Mise en forme de fichier source Panoramic (nième version) | |
|
|
|
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 18:35 | |
| Ben oui Nardo, c'est exactement ça, et c'est justement le but que je recherchais. Un tri en fonction du seul critère de la valeur Ascii des caractères (sans considération de majuscules, minuscules, caractères diacritiques, pays et que sais-je encore...)
(bon, là on me demande en cuisine...)
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 18:44 | |
| Le résultat du tri me semble impeccable ! Et les tests caractère par caractère pour la dichotomie devraient marcher avec ASC(). | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 18:45 | |
| J'ai fais des tes aussi et le tri a bien fonctionné aussi | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 18:56 | |
| De toute manière tout dépend de l'utilisation et de ce que l'on souhaite faire après. Le tri par code ascii fait que dans la liste tu obtiens cet ordre:
AAAA ZZZZ aaaa zzzzz
Pour revenir dans mon cas, les critères de tri importe peu, l'essentiel c'est que la fonction de comparaison de chaine soit en concordance avec cet ordre... La dernière version de ma procédure strcmp, fonctionne très bien avec l'ordre de tri de la DLIST puisqu'elle s'appuie dessus... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 19:05 | |
| Petite question, comment faire un bon test de performance simple pour voir si un modification de code accélère ou non le traitement Avec le source qui fonctionne, j'ai changé un peu la façon de procéder et je voudrais voir si ça permet d'accélérer, si ça ralenti ou si ça n'a juste aucun impact ... Source: - Code:
-
DIM a$, b$, c$, i%, j%, l%, f$ LABEL Trih
HEIGHT 0, 900: WIDTH 0, 840 LIST 1: HEIGHT 1, 800: WIDTH 1, 400 DLIST 2 LIST 3: HEIGHT 3, 800: LEFT 3, 410: WIDTH 3, 400 f$ = "C:\Temp\Test.txt" FILE_LOAD 1, f$ GOSUB Trih END
Trih: IF COUNT(1) > 0 FOR i% = 1 TO COUNT(1) a$ = ITEM_READ$(1, i%): b$ = "" l% = LEN(a$) FOR j% = 1 TO l% c$ = RIGHT$("0"+HEX$(ASC(LEFT$(a$,1))), 2) b$ = b$ + c$ a$ = RIGHT$(a$, LEN(a$) - 1) NEXT j% ITEM_ADD 2, b$ NEXT i% SORT 2 FOR i% = 1 TO COUNT(2) a$ = ITEM_READ$(2, i%): b$ = "" l% = LEN(a$) FOR j% = 1 TO l% STEP 2 c$ = CHR$(HEX(LEFT$(a$, 2))) b$ = b$ + c$ a$ = RIGHT$(a$, LEN(a$) - 2) NEXT j% ITEM_ADD 3, b$ NEXT i% END_IF RETURN | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 19:59 | |
| Il suffit de faire un TIME$ avant et après et de faire la différence (précision de la seconde). Et il vaut mieux faire ça sur un fichier texte long, pour avoir une meilleure précision (un nombre plus grand). par exemple, si je fais dans mon exemple: - Code:
-
FILE_LOAD 1, f$ t1 = VAL(RIGHT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+3600*VAL(LEFT$(TIME$,2)) GOSUB Trih t2 = VAL(RIGHT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+3600*VAL(LEFT$(TIME$,2)) MESSAGE "Durée= " + STR$(t2-t1) END pour un fichier texte d'une centaine de lignes de chacune environ 60 à 80 caractères ce n'est pas mesurable, pour 500 lignes c'est environ 4 secondes 1000 lignes 9 secondes. Donc valable peut-être seulement pour les listes courtes, et/ou avec de petites lignes On peut peut-être optimiser un peu, mais j'ai des doutes.. @Jicehel je n'ai pas essayé, mais si tu rajoutes deux instructions dans chaque boucle ça m'étonnerait fort que ça gagne du temps...
Dernière édition par JL35 le Dim 13 Nov 2011 - 20:20, édité 3 fois | |
|
| |
Invité Invité
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 20:10 | |
| C'est un peu bordélique, mais c'est en suivant mon idée: L'ordre vous l'arrangez comme il vous plait. avec lec caractères spéciaux: - Code:
-
rem ' ==>DIRECT> full_space 0 dim a,a$ ,w$,f$ ,b,c$ ,v ,b$ , i% : label tri memo 1:font_size 1,10:height 1,height(0)-50 for a=1 to 255:item_add 1,str$(a)+chr$(9)+chr$(a):next a item_add 1, chr$(145) button 3:caption 3,"tri":on_click 3,tri
w$="" : ' {list windows
dlist 10 :' left 10,260 : height 10,height(1) :width 10,200 for i%=32 to 32+120 item_add 10,chr$(i%) : ' création de la chaine selon windows next i% sort 10 :' et tri for a=1 to count(10):w$=w$+item_read$(10,a):next a :' création de la chaine de tri windows }
' création chaine Made in France , selon son désir F$=" 0123456789AÂÄÆBCÇDEÉÈÊFGHIÏÎJKLMNOÔÖPQRSTUÙÛÜVWXYZaàâbcçdeéèêëfghiïjklmnoôöpqrstuùûüvwxyz_'.@$:,;()[]%*/+-<=>?!/\"
memo 2:left 2,310:width 2,width(0)-350:height 2,200:font_size 2,12 :' teste du prg item_add 2,F$ item_add 2,w$ clear 1:font_size 1,8
file_load 1,"C:\temp\DIR.tmp" :' là ou il y a les mots clés end tri: clear 10 ' on remplace chaque caractère selon son ?? homologue windows hide 1 for a=1 to count(1) a$=item_read$(1,a) :b$="":c$="" for b=1 to len(a$) b$=mid$(a$,b,1) v=instr(F$,b$) c$=c$+mid$(w$,v,1) next b item_add 10,c$ next a sort 10 :' on fait le tri selon windows clear 1 ' on remplace les caractères par les notres. for a=1 to count(10) a$=item_read$(10,a) :b$="":c$="" for b=1 to len(a$) b$=mid$(a$,b,1) v=instr(W$,b$) c$=c$+mid$(F$,v,1) next b item_add 1,c$ next a show 1
Est-ce c'est une bonne méthode? pour vous. A noter que je n'est mis que les caractères que j'avais besoin, à vous d'en rajouter, ou de changer l'ordre. Je viens de remettre, il y avait des erreurs, suite à des corrections au moment de posterGénéralement lorsqu'il n'y a pas de réponse, c'est qu'il y a quelque chose qui cloche, et on ne le dit pas. Pourtant les essais que j'ai fait semble être bon. Passons à autre chose, je crois qu'aujourd'hui c'est pas mon jour.
Dernière édition par cosmos70 le Dim 13 Nov 2011 - 21:09, édité 1 fois |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 21:05 | |
| J'ai repris le programme de JL35 et j'ai utilisé au autre mécanisme pour construire la liste 3, sans utiliser la dlist 2 ni la commande SORT. Je ne passe pas non plus par la représentation hexadécimale. Je construis simplement la liste triée un insérant chaque nouvelle ligne directement au bon endroit, en fonction du code ASCII des caractères. Dans le programme, l'insertion est faite par le sous-programme tribin que j'ai ajouté. - Code:
-
DIM a$, b$, i%, j%, f$
dim k%, ca%, cb%, done% LABEL Trih, tribin
HEIGHT 0, 900: WIDTH 0, 840 LIST 1: HEIGHT 1, 800: WIDTH 1, 400 DLIST 2 LIST 3: HEIGHT 3, 800: LEFT 3, 410: WIDTH 3, 400 f$ = "C:\Temp\Test.txt" FILE_LOAD 1, f$ ' GOSUB Trih gosub tribin END
tribin: for i%=1 to count(1) a$ = item_read$(1,i%) ' message a$ if count(3)=0 item_add 3,a$ else done% = 0 for j%=1 to count(3) b$ = item_read$(3,j%) for k%=1 to len(b$) ca% = asc(mid$(a$,k%,1)) cb% = asc(mid$(b$,k%,1)) if ca%>cb% then exit_for if ca%<cb% item_insert 3,j%,a$ done% = 1 exit_for end_if next k% if done%=1 then exit_for next j% if done%=0 then item_add 3,a$ end_if next i% return
Trih: FOR i% = 1 TO COUNT(1) a$ = ITEM_READ$(1, i%): b$ = "" FOR j% = 1 TO LEN(a$) b$ = b$ + RIGHT$("0"+HEX$(ASC(MID$(a$, j%, 1))), 2) NEXT j% ITEM_ADD 2, b$ NEXT i% SORT 2 FOR i% = 1 TO COUNT(2) a$ = ITEM_READ$(2, i%): b$ = "" FOR j% = 1 TO LEN(a$) STEP 2 b$ = b$ + CHR$(HEX(MID$(a$, j%, 2))) NEXT j% ITEM_ADD 3, b$ NEXT i% RETURN @Cosmos70: ta routine produit ceci Fichier non trié: - Citation :
- FILE_BIN_READ
martin _TEST file_bin_read _test FILE_CLOSE FILES files éducation fileàfichier education Education
Fichier trié: - Citation :
- Education
FILES FILE_BIN_READ FILE_CLOSE education éducation fileàfichier files file_bin_read martin _TEST _test
On voit que le "_" est APRES les minuscules alors qu'il devrait se trouver entre les deux. De même, les caractères accentués sont placés avec leurs caractère de base ("é" près du "e") alors qu'il devraient être à la fin. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 21:17 | |
| C'est sûrement plus élégant, mais... avec mon fichier de 1000 lignes: routine Trih : 9 secondes routine tribin: 143 secondes... ça doit croître de manière exponentielle avec la taille du fichier ! je vais essayer avec un fichier plus court. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 21:24 | |
| Je n'ai pas prêté attention aux performances. Je voulais juste produire une liste triée correctement selon les codes ASCII, sans passer par une commande SORT. J'ai déjà dit que ta routine trih produit un résultat exact (le même que tribin), et si trih est plus rapide, il ne faut pas hésiter. | |
|
| |
Invité Invité
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 21:25 | |
| Je viens de voir à l'instant que quelque chose n'allait pas. J'ai pas été assez haut, après D, on a les 3d... Je laisse tomber, je ne suis pas à la hauteur Quand à l'emplacement de "_" c'est moi qui l'ai mis après le "z". Je ne me suis pas servit des codes ASCII, mais fais ma propre liste. Dans un tri, je ne trouve pas très normal que "_" qui n'est pas une lettre, soit placé entre. Je vais essayer de faire le clown ça va me changer les idées. |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 21:28 | |
| Merci JL35, tu as raison, ma méthode est plus longue, mais le but était surtout de pouvoir tester l'optimisation de la méthode. Pour un fichier de 1000 lignes Ta méthode donne 5s, la mienne 8s et celle de Klaus, je l'ai arrêté après plusieurs minutes comme j'avais toujours le sablier ... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Dim 13 Nov 2011 - 21:30 | |
| @Klaus Effectivement, j'ai un peu mesuré les deux routines avec des tailles de fichier texte croissantes: - Code:
-
Trih Tribin 50 l. 0s 0s 100 l. 1s 1s 200 l. 2s 7s 300 l. 3s 15s 450 l. 5s 28s avec ma routine c'est à peu près proportionnel, avec la tienne c'est exponentiel... @Jicehel on s'est croisés... Je me dis après coup que ça aurait valu le coup d'ouvrir un fil de discussion spécial 'Tri', là on s'est un peu éloignés du sujet original... | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 14 Nov 2011 - 18:22 | |
| Ouais ! Voua avez un peu pourri mon post !!! C'est une revanche ?... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 14 Nov 2011 - 20:21 | |
| Absolument non mais !! Mais bon, ça a un rapport, c'est quand même la suite du problème que tu rencontrais que te propose JL35 | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 14 Nov 2011 - 20:47 | |
| Moui.... enfin j'ai trouvé la solution depuis la page 3 !!! Bon je peux pas dire grand chose, vu le nombre de sujet que j'ai moi-même pourri... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 14 Nov 2011 - 22:18 | |
| | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Mer 16 Nov 2011 - 18:52 | |
| Après quelques jours de "plat" dans ce fil de discussion, sans vouloir "pourrir" ton poste: J'ai ajouté à ma distribution dll DLLdivers, dans la dll STRINGS.dll, une routine qui fait une comparaison selon l'dre ASCII strict ! Cela pourrait peut-être t'intéresser ? La donc est dans Autres_DLL.rtf contenue dans le zip... | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 20:03 | |
| Petite mise à jour : possibilité d'imprimer le résultat (si la DLL de Klaus est présente) C'est perfectible, notamment la mise en page que j'ai pour l'instant adapté à mon imprimante. Pour l'adapter voir la procédure PRT_Open en fin de programme... pour le source voir le lien en page 1 | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 21:05 | |
| Le lien est le bon sur la page 1 ? J'arrive sur un source sur lequel je n'ai pas la possibilité d'imprimer je crois. En plus, le source incrémente le if tout ça mais ne fait pas décrémentation quand il rencontre les End-if ou alors c'est moi qui fait des bêtises ... | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 21:11 | |
| Oups ! Je me suis trompé de répertoire : maintenant cela doit être ok... Si quelqu'un veut bien jeter un coup d'oeil dans le code, surtout au niveau de l'impression, cela ne sera pas de refus : je suis ouvert à toutes critiques... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 22:33 | |
| Je dois avoir un problème de cache, je tombe sur le même source avec le lien page 1, sauf erreur de ma part ou s'il change le menu quand la DLL de Klaus n'est pas dans le répertoire | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 23:12 | |
| De nouveau de retour ! Normalement la dernière procédure du source s'appelle PRT_SautPage... Si c'est pas le cas, il faut forcer le chargement de la page (ou sous Firefox menu Outils/Options/Avancé bouton "vider le cache maintenant") | |
|
| |
Invité Invité
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 23:26 | |
| Vraiment superbe ton labyrinthe! |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) Lun 21 Nov 2011 - 23:27 | |
| Heu... je crois que tu t'es planté de sujet... Sinon pour savoir si vous avez la dernière version en date : 1.2.2 (ligne 27 dans le source) (1.2.2 -> impression:coloration des lignes en commentaire) | |
|
| |
Contenu sponsorisé
| Sujet: Re: Mise en forme de fichier source Panoramic (nième version) | |
| |
|
| |
| Mise en forme de fichier source Panoramic (nième version) | |
|