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.
Chargement d'un très gros fichier. Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Chargement d'un très gros fichier. Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Chargement d'un très gros fichier. Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Chargement d'un très gros fichier. Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Chargement d'un très gros fichier. Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Chargement d'un très gros fichier. Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Chargement d'un très gros fichier. Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Chargement d'un très gros fichier. Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Chargement d'un très gros fichier. Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Chargement d'un très gros fichier. Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Chargement d'un très gros fichier. Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Chargement d'un très gros fichier. Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Chargement d'un très gros fichier. Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Chargement d'un très gros fichier. Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Chargement d'un très gros fichier. 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
-14%
Le deal à ne pas rater :
Lave-linge hublot HOOVER HWP 10 kg (Induction, 1600 trs/min, Classe ...
299.99 € 349.99 €
Voir le deal

 

 Chargement d'un très gros fichier.

Aller en bas 
2 participants
AuteurMessage
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Chargement d'un très gros fichier. Empty
MessageSujet: Chargement d'un très gros fichier.   Chargement d'un très gros fichier. EmptyLun 21 Jan 2013 - 14:04

Bonjour à tous.

Je vous livre une astuce que vous pouvez éventuellement utiliser pour rechercher un item dans un fichier volumineux.

Le code suivant m'a été donné par Klaus.

Le fichier doit d'abord être trié avant utilisation, mais seulement grâce au code suivant.

Ensuite, il vous est possible de rechercher un élément quelconque, grâce à la méthode 'SearchStringList'.

Cette recherche est très rapide.

Le chargement du fichier étant lui-même très rapide (2 sec pour un fichier de 173.000 éléments, au lieu de 21 sec avec un objet List).

Code:
label chercher
Dim res%, index%
Dim a$, b$, mot$, separateur$, parenthese_gauche$, parenthese_droite$
separateur$=chr$(61)

mot$="Katze(féminin) (f)"

parenthese_gauche$=chr$(40)
parenthese_droite$=chr$(41)

width 0,700

edit 2 : top 2,200 : width 2,200
button 3 : top 3,250
caption 3,"Chercher" : on_click 3,chercher

dll_on "kgf.dll"

print "Chargement du dictionnaire en cours..."

dlist 999
sort_on 999
a$ = "dico_français_allemand.txt"
file_load 999,a$
' Enregistrement du dico trié.
file_save 999,a$

res% = dll_call1("CreateStringList",1)
res% = dll_call2("LoadStringList",1,adr(a$))
message "Dictionnaire: "+str$(res%)+" lignes"

end

chercher:
  a$ = trim$(mot$)+" "+separateur$
  b$ = string$(255," ")
  index% = dll_call3("SearchStringList",1,adr(a$),adr(b$))
  b$ = trim$(b$)
  message str$(index%)+": "+b$
  return

Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Chargement d'un très gros fichier. Empty
MessageSujet: Re: Chargement d'un très gros fichier.   Chargement d'un très gros fichier. EmptyLun 21 Jan 2013 - 14:40

Petit complément d'information:

La fonction CreateStringList a été modifiée dans la version actuellement en ligne sur MyDrive !
Son appel est maintenant:
Code:
res% = dll_call2("CreateStringList",Numero%,Mode%)

Numero% donne le numéro de ls StringList b(entre 1 et 20)
Mode% détermine si la liste est triée ou non. La valeur 1 indique que la liste est toujours triée, et toute autre valeur indique que la liste n'est pas triée.

Si l'on a créé la liste avec Mode%=1, la fonction LoadStringList trie automatiquement la liste après le chargement. Dans ce cas, il n'est plus nécessaire le trier la liste au préalable.

Mais: puisque le programme "sait" maintenant si la liste est triée ou pas, la fonction SearchStringList utilise la méthode de recherche ultra-rapide si la liste est triée, et une méthode plus lente si la liste n'est pas triée.

Je reprends donc le code de Pan59 pour le rendre conforme à la version actuelle de KGF.dll:
Code:
label chercher
Dim res%, index%
Dim a$, b$, mot$, separateur$, parenthese_gauche$, parenthese_droite$
separateur$=chr$(61)

mot$="Katze(féminin) (f)"

parenthese_gauche$=chr$(40)
parenthese_droite$=chr$(41)

width 0,700

edit 2 : top 2,200 : width 2,200
button 3 : top 3,250
caption 3,"Chercher" : on_click 3,chercher

dll_on "kgf.dll"

print "Chargement du dictionnaire en cours..."

' les lignes suivantes sont maintenant inutiles:
' dlist 999
' sort_on 999
' a$ = "dico_français_allemand.txt"
' file_load 999,a$
' ' Enregistrement du dico trié.
' file_save 999,a$
' fin des lignes inutiles

res% = dll_call2("CreateStringList",1,1) : ' passé à 2 paramètres avec l'option "liste triée"
res% = dll_call2("LoadStringList",1,adr(a$))
message "Dictionnaire: "+str$(res%)+" lignes"

end

chercher:
  a$ = trim$(mot$)+" "+separateur$
  b$ = string$(255," ")
  index% = dll_call3("SearchStringList",1,adr(a$),adr(b$))
  b$ = trim$(b$)
  message str$(index%)+": "+b$
  return


C'est vrai: la performance dans la recherche est bluffante.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Chargement d'un très gros fichier. Empty
MessageSujet: Chargement d'un très gros fichier.   Chargement d'un très gros fichier. EmptyLun 21 Jan 2013 - 14:43

Bonjour.

Oui, autant pour moi, il manquait le 3è paramètre à la fonction.

Pour la recherche d'un élément, j'utilise la sub suivante, à adapter suivant vos besoins:


Code:
sub chercher(element$, numero_objet_liste%)

    ' Recherche un élément dans un objet de type LIST.
    ' On passe une chaîne de caractères en paramètre qui représente le début de l'élément recherché.
    ' On peut chercher également l'élément exact.
    ' La recherche est insensible à la casse.
    ' L'objet LIST ciblé peut être un objet Panoramic, dans n'importe quelle fenêtre, ou alors un objet LIST d'une application externe, Panoramic ou non.

    ' 0 = la recherche aboutit si le début d'un élément correspond au critère
    ' 1 = la recherche aboutit si l'élément en sa totalité corrrespond au critère
    ' res% fournit 0 si l'élément n'est pas trouvé.

    if instr(sens_traduction_texte$,"allemand")>0 and numero_objet_liste%=999
      temporaire$ = string$(255," ")
      res% = dll_call3("SearchStringList",1,adr(element$),adr(temporaire$))

      ' temporaire$=trim$(left$(trim$(temporaire$),instr(trim$(temporaire$),separateur$)))
      if left$(temporaire$,len(element$))<>element$ then res%=0

          else

      hnd% = handle(numero_objet_liste%)
      res% = dll_call3("SearchListBox",hnd%,0,adr(element$))
    end_if

end_sub
Revenir en haut Aller en bas
Contenu sponsorisé





Chargement d'un très gros fichier. Empty
MessageSujet: Re: Chargement d'un très gros fichier.   Chargement d'un très gros fichier. Empty

Revenir en haut Aller en bas
 
Chargement d'un très gros fichier.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment reconvertir un fichier exe Panoramic en fichier BAS
» le processus ne peut pas accéder au fichier car ce fichier..
» Convertir un fichier BAS panoramic en fichier EXE
» Chargement
» chargement de Panoramic

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: