FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
trier un fichier de façon rapide Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
trier un fichier de façon rapide Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
trier un fichier de façon rapide Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
trier un fichier de façon rapide Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
trier un fichier de façon rapide Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
trier un fichier de façon rapide Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
trier un fichier de façon rapide Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
trier un fichier de façon rapide Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
trier un fichier de façon rapide Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
trier un fichier de façon rapide Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
trier un fichier de façon rapide Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
trier un fichier de façon rapide Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
trier un fichier de façon rapide Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
trier un fichier de façon rapide Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
trier un fichier de façon rapide Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 trier un fichier de façon rapide

Aller en bas 
3 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 17:54

Salut à tous,

je vous livre un morceau de code (pas pour le faire tourner vu que c'est un morceau).
il s'agit d'extraire d'un DLIST 90 une ligne entiere B$ et de transfèrer dans DLISt 91 cette ligne pourvu que C$=A$:n90 est le COUNT(90)
Le fichier contient tout les codes postaux de france sur 4 éléments séparé par le ";".il doit faire au moins 30000 lignes.
Ce code fonctione (on peut affecter à A$ de 1à 5 chiffres qui représentes le code postal à rechercher), ce qui ne va pas c'est la longueur d'excution.

Ma question c'est pensez-vous que c'est la méthode de recherche qui est en cause ou la taille du fichier

Code:
ajsit15:
if numeric(a$)=0 then message "Vous devez entrer une valeur numérique":text nf%+23,"":return
la=len(a$)
for n=1 to n90
b$=item_read$(90,n)
      for a=1 to len(b$):c$=mid$(b$,a,1)
      if c$=";" then d$=mid$(b$,a+1,la):goto ajsit16
      next a
ajsit16:
if a$=d$ then item_add 91,b$
next n

return

stop

Je résume la démarche:
je fais rechercher dans B$, le ";" ensuite je lui dit d'affecter a D$ le même nombre de caractère que A$, a partir du caractère de B$ situé immédiatement après le ";" .Ensuite je compare A$ (code à rechercher) avec D$ et si c'est OK de l'insérer dans un autre DLIST (91) pour gestion ultérieur.

Il faut bien 2mn pour les boucles soit bouclées.

Y aurait-il une autre méthode plus rapide.

Merci et à plus


Dernière édition par Jean Claude le Mar 24 Nov 2009 - 14:23, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 18:53

Peut-être les deux boucles imbriquées ? mais c'est bizarre quand même.

Juste une petite remarque : dans ta boucle for a = 1 ...
tu devrais remplacer le goto ajsit16 par un exit_for et supprimer cette étiquette, ta sortie sauvage de boucle cause peut-être une saturation de pile.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 19:04

Je vient d'essayer avec EXIT_FOR, çà reste vraiment trop long.
Je vais essayer sans avoir 2 boucles imbriquées.
Merci A+
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

trier un fichier de façon rapide Empty
MessageSujet: re   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 19:13

salut

Si tu fais une comparaison de code postal essaye le STEP 6 pour une comparaison par paquet.
Si j'ai bien compris ton explication, ça devrait améliorer l'exécution de la boucle

@+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 19:59

Georges,

Je ne peut pas utiliser STEP, car le fichié de l'INSEE, que jai trouvé sur le net, se présente comme suit:

Code:
L'ABERGEMENT CLEMENCIAT;01400;AIN;1001
L'ABERGEMENT DE VAREY;01640;AIN;1002
AMAREINS;01090;AIN;1003
AMBERIEU EN BUGEY;01500;AIN;1004
AMBERIEUX EN DOMBES;01330;AIN;1005
AMBLEON;01300;AIN;1006
AMBRONAY;01500;AIN;1007
AMBUTRIX;01500;AIN;1008
ANDERT ET CONDON;01300;AIN;1009
ANGLEFORT;01350;AIN;1010
APREMONT;01100;AIN;1011

ET là, tu en as qu'un seul bout. Je suis donc obligé de lire la 2 ème variable qui est le code postal, pour extraire la ligne entière.

Mais demain je vais expérimenter une autre façon de faire, pour avoir la rapidité de traitement que je veus. (justement là le STEP servira)

Je te remercie et à plus.

PS: à propos, ton avatar actuel est sympa.
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

trier un fichier de façon rapide Empty
MessageSujet: re   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 20:14

salut

oui, oui moi aussi
il vient de la bibliothèque

@+
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

trier un fichier de façon rapide Empty
MessageSujet: re   trier un fichier de façon rapide EmptyLun 23 Nov 2009 - 20:37

resalut

Apparemment chaque ligne se termine par paquet de quatre chiffres.
En dimensionnant chaque ligne avec LEN(), tu enlève d'office cinq caractères.
Avec le step -1 tu recherche le ";" et voila tu peut avoir tout de suite toute ta ligne décomposée en quatres paquets.
Je pense que ça pourrait vraiment améliorer la rapidité d'exécution de ta recherche.

@+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 10:09

Oui mais,

Le 4 ème et dernier élément ne comporte pas forcémént 4 caractères, pour les départements à partir de 10, il t en a 5.

DE TOUTE FACONS, NE CHERCHE PLUS, J'AI UNE SOLUTION QUI DIVISE LA RECHERCHE CONSIDERABLEMENT.

Je vous prépare un message pour explications, car je ne peut pas déçament garder ma trouvaille pour moi.

Donc, à bientot

Je bosse pour vous
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 14:50

Bon voilà la solution

' avant tout vous devez créer 1 fichiers vides dans PANORAMIC avec FILE_OPEN_WRITE
' voici le nom "codpost2.txt".Placé le dans un dossier "tri rapide" sur le bureau
' vous allez checher le fichier de base ici: http://www.galichon.com/codesgeo/
' vous le décompréssez
' c'est un fichier EXEL, donc il faut passer par EXEL
' les éléments sont groupés dans la colone A de EXEL,virez la ligne 1 du tableau
' élargissez la colonne A (si vous voulez)
' maintenant vous enregistrez le classeur comme suit
' séléctionnez enrgistrer sous.., rechercher le dossier "tri rapide", ouvrez-le
' changez le nom du fichier insee par "codpost" et très important vous devez
' changer le type de fichier par texte(séparateur:tabulation)(*.txt)
' cliquez sur enregitrer et répondez oui à la question suivante et ensuite non
' si tout va bien, vous devez retrouver dans le dossier "tri rapide" votre
' fichier codpost, qui pour PANORAMIC s'appelle "codpost.txt"
'
' Maintenant vous lancez ce code (je vous conseille de l'enregistrer, avant)
' Attention: le traitemment est assez long (2 à 4 mn)
' Voila vous avez un nouveau fichier "codpost2.txt" (Pour utilisation PANORAMIC)
' ou tout les éléments se retrouvent seul sur une ligne, dans l'odre de lecture

je voulais dire: ou Chaque élément se retrouve seul sur sa ligne, dans l'odre de lecture

Code:


' Ce code sert à préparer "codpost2.txt"
' Attention exécution très longue 3 à 4 mn

dim a$,b$,c$,c2$,d$,f$,e1$,e2$,e3$,e4$
dim a,b,c,d,n,la,lb,n90
label t13,t15,t16

top 0,10:height 0,900:width 0,1000
list 90:width 90,400:height 90,800
list 91:left 91,500:width 91,400:height 91,800
gosub t13
end
' ______________________________________________________________________________
t13:
file_add 90,"codpost.txt":n90=count(90)

a$="014": ' ne sert que si on utilise la condition if a$=d$ then (ne pas supprimer)

t15:
la=len(a$)
for n=1 to n90
  b$=item_read$(90,n)
    for a=1 to len(b$):c$=mid$(b$,a,1)
        if c$=";" then d$=mid$(b$,a+1,la):c=len(b$)-(a):f$=mid$(b$,a+7,c):gosub t16:exit_for
    next a
  rem if a$=d$ then item_add 91,b$
  item_add 91,e1$
  item_add 91,e2$
  item_add 91,e3$
  item_add 91,e4$
next n

file_save 91,"codpost2.txt"
return

t16:
lb=len(b$)-(c+1):e1$=mid$(b$,1,lb):e2$=mid$(b$,a+1,5)
for b=1 to len(f$):c2$=mid$(f$,b,1)
if c2$=";" then e3$=left$(f$,b-1):d=len(f$)-b:e4$=mid$(f$,b+1,d)
next b
return

end

Là vous allez me dire c'est bien beau tout çà.

j'ai repris mon code qui pêchait par sa lenteur (celui d'hier), je l'ai modifier pour s'adapter au nouveau fichier, comme suit:

Code:


' Attention temps d'exécution environ 30"

dim a$,b$,c$,c2$,d$,r$,f$,e1$,e2$,e3$,e4$
dim a,b,c,d,n,la,lb,n90

top 0,10:height 0,900:width 0,1000
list 90:width 90,400:height 90,800
list 91:left 91,500:width 91,400:height 91,800


file_add 90,"codpost2.txt":n90=count(90)

caption 0,n90

a$="833": ' Vous fabriquez le programme qui gere A$, essayez avec vos chiffres

la=len(a$)
for n=2 to n90 step 4
r$=item_read$(90,n)
b$=item_read$(90,n-1)
if left$(r$,la)=a$ then item_add 91,b$:item_add 91,r$:item_add 91,""
next n

end

' Cette fois-ci 91 contient ce qui est recherché par A$ et beaucoup plus vite

La conclusion c'est que PANORAMIC préfère des fichiers multi-lignes, pourvu qu"il y ai un seul élément par ligne. Avez -vous regardé le CAPTION de FORM 0. Impressionnant.
A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 18:54

Après chronomètrage, il faut 10 secondes pour récuperer le villes et code postaux du fichier "codpost2.txt" (suivant ce qu'on met dans a$). Sachant que ce fichier contient 155796 éléments.

Qui dit mieux ?
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

trier un fichier de façon rapide Empty
MessageSujet: re   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 19:10

salut Jean-Claude

Tu me pardonneras, mais je n'ai toujours compris ce que tu voulais faire.
Récupérer ligne par ligne, parquets par parquets dans chaque ligne.
Pour moi, si tu pouvais me dire ton objectif, ce serait super.
@+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 19:57

Je voulais démontrer que si tu dois faire faire à ton programme des fichiers énormes, il vaut mieux, pour la rapidité d'execution, faite des fichiers comme ceci:
Code:
ORLEANS
45000
LOIRET
45000

Plutot que ceci:
Code:
ORLEANS;45000;LOIRET;45000

Je te garantie que çà fait une sacrée différence en temps d'exécution (pour PANORAMIC, bien sur)

Mais as-tu fait l'essai ?
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

trier un fichier de façon rapide Empty
MessageSujet: re   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 20:03

salut Jean-Claude

Oui, j'ai fait l'essai et j'ai obtenu exactement ce que tu expliques.
Maintenant que tu l'as expliqué, j'ai compris la finalité.
@+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide EmptyMar 24 Nov 2009 - 20:24

çà me semble important que l'utilisateur de ton programme ne soit pas obligé d'aller fumer un joint pendant que le programme recherche un code postal.

Ce que je pense important, pour vous tous, c'est que cette façon, de créer et gérer un fichier, est rapide, surtout si vous préparez un monstre de programme.

Mais j'attend l'avis des experts, car ils ont peut-être mieux.

J'aimerai savoir ce qu'en pense Jack.
Dans le projet que je développe, actuellement, la rapidité d'exécution est vital.

A+
Revenir en haut Aller en bas
Contenu sponsorisé





trier un fichier de façon rapide Empty
MessageSujet: Re: trier un fichier de façon rapide   trier un fichier de façon rapide Empty

Revenir en haut Aller en bas
 
trier un fichier de façon rapide
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» le processus ne peut pas accéder au fichier car ce fichier..
» Comment reconvertir un fichier exe Panoramic en fichier BAS
» un scroll_bar, façon maison
» Une autre façon de terminer une application.
» Convertir un fichier BAS panoramic en fichier EXE

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: