FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Cacher la barre des tâches
par Klaus Aujourd'hui à 8:41

» quel est ce comportement de Panoramic_editor
par Oscaribout Aujourd'hui à 0:22

» Des FORM(s) Colorés
par Jean Claude Hier à 20:58

» Recherches dans un fichier texte
par JL35 Hier à 20:18

» Problème d'affichage des pages du forum (Résolu)
par Jean Claude Hier à 20:00

» Une "base de connaissance" - pour jouer ou plus si affinité
par Klaus Hier à 19:10

» Objet 3D_PLANE, réalisation d'un dé en 3D
par papydall Hier à 13:54

» Créer une application *.exe
par Yannick Ven 18 Mai 2018 - 20:01

» [RÉSOLU] Priorité affichage des objets : comment la définir?
par papydall Ven 18 Mai 2018 - 18:22

» Aucune différence entre ON_CLICK et ON_DOUBLE_CLICK
par Jean Claude Jeu 17 Mai 2018 - 8:37

» [Résolu] Récuperer les fonctions systeme de Panoramic
par Minibug Mar 15 Mai 2018 - 23:21

» Est-ce qu'un fichier est inclus dans l'application ?
par Yannick Mar 15 Mai 2018 - 12:04

» Création d'une application avec Panoramic_Editor
par Klaus Mar 15 Mai 2018 - 0:36

» Pour faire patienter
par Minibug Lun 14 Mai 2018 - 21:25

» Une copie de Panoramic Editeur
par Minibug Lun 14 Mai 2018 - 19:55

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2018
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Demande de fonction spécifique avec KGF.

Aller en bas 
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 14:00

Oui, je peux. Faudra changer un peu l'algorithme, mais ce sera fait bientôt.

As-tu vu la valeur de res% qui donne le temps passé dans la fonction, en tics d'horloge ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 14:12

J'ai mis une nouvelle version sur le WebDav, dossier DLLs. Maintenant, les mots à exclure ne seront plus exlus qu'en première position du critère.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 14:29

Désolé Klaus, mais je ne constate aucune amélioration, après téléchargement de la dernière version de kgf, avec le code suivant.
La combo reste désespérément vide, c'est incompréhensible.

Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks

dim t$:t$=" vende a domicilio . "
dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
dim fichier$:fichier$="fichiers\formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$=" #"

combo 100

dll_on "kgf"

ticks=number_ticks
res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
text 100,item_read$(100,1)
message str$(number_ticks-ticks)                                                                                                                    
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 14:36

Chez moi, il trouve 3 lignes qui sont les suivantes:
Citation :
vende a domicilio #348982;6;2
vende a domicilio #348982;6;3
vende a domicilio #348982;6;4

J'ai refait la copie de KGF.dll, au cas où...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 15:41

Bonjour.

Je pense que le problème vient de la taille du fichier, qui contient 917.427 lignes.
J'ai testé le code avec un fichier de 20 lignes seulement, et tout fonctionne parfaitement.

En fait, j'ai besoin uniquement du n° de la 1ère ligne répondant aux critères.

Il faudrait en fait réaliser une sorte de SearchStringList, avec chacun des critères requis.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 15:46

Bon, alors il faut vraiment essayer le laisser la routine aller jusqu'au bout; et afficher la valeiur de res% au retour. Tant que la fonction ne retourne pas, le travail n'est pas terminé.

Dans un premier temps, il faut voir si, sur le fichier réel, le travail est fait correctement. Ma fonction, de touts façons, ne retourne que les numéros d'enregistrement dans la combo, donc c'est bon à ce niveau.

Dans un deuxième temps, tu pourrais me passer un lien de téléchargement du fichier en question pour que je tente de dompter la bête dans le réel...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 15:52

J'ai mis en ligne le fichier txt à 'adresse suivante:

dl.free.fr/gScAjImYh

L'adresse soit être précédée de http://

Merci de la suite.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 16:21

J'ai téléchargé, merci.

J'avais remanié l'algorithme pour améliorer la vitesse. Le résultat est assez spectaculaire. Tu trouveras la nouvelle DLL sur mon WebDav, dossier DLLs. Avec ton fichier, je trouve les 4 lignes suivantes:
Citation :
881356
881357
881358
881359
en 5687 ticks, pour le critère suivant:
Code:
dim t$:t$=" vende a domicilio . "

Qu'en penses-tu ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 16:30

Voici la valeur de res%: 75484 !!

Avec la version précédente de kgf.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 16:32

Et bien, la nouvelle sera sacrément plus rapide !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 16:41

Je viens de tester sur le texte d'origine.
La durée d'exécution est malheureusement beaucoup trop longue.

res%=90375 !!

Ne pourrais-tu pas réaliser un SearchStringList, comme je le proposais dans un post précédent ?

La méthode d'origine réalisant la même opération en seulement 4,5 sec, avec le bout de code suivant.

Code:
   ticks=number_ticks
    for k%=1 to count(2)-flag2%
        e$=item_read$(2,k%)
        ' message "["+e$+"]"
        if instr(m$,"*"+e$+"*")+numeric(e$)=0
           if flag2%=1 then e$=e$+" "+item_read$(2,k%+1)+" "
           e$=lower$(e$)+"#"
           res%=dll_call3("SearchStringList",y%,adr(e$),p%)
           if res%>0 then item_add 3,res%
        end_if
    next k%
    ' 4,5 sec.
    ' message str$(number_ticks-ticks)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 16:53

J'ai retesté - je suis entre 5200 et 5300. Pas plus. Il doit y avoir un problème de version de DLL, Pedro.

Pour ce qui est de l'emploi d'une StringList, je vais faire des essais. Mais lar rapport à la recherche d'une seule chaîne de caractères dans un gros fichier, il y a une différence importante: ici,, il faut chercher un nombre potentiel de chaînes de caractères différentes, chacune à travers tout le fichier. Difficile pour chaque chaîne individuelle de parcourir la StringList. Dans la fonction présente, le lis le fichier, ligne par ligne, mais avec un gros tampon de lecture de 128 Ko, et je cherche chaque critère dans la ligne lue, avant de lire la suivante. Mais je vais voir ce que ça donne avec une StringList.

Ceci dit, reprends la DLL du WebDav - je suis sûr que tu constateras un gros progrès.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 16:59

Après un test réalisé sur le texte de départ, la 1ère ligne de la combo indique le nombre 17621, ce qui correspond à la ligne suivante du fichier:

acuda a lo más urgente #19920;10;1

Or, cette ligne n'apparaît pas dans le texte !!

De plus, je crois savoir que l'utilisation de SearchStringList donne directement le 1er n° de ligne correspondant au critère indiqué, ce qui est le but recherché.

D'où une vitesse impressionnante.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 17:35

J'ai mis une nouvelle versio de KGF.dll sur le WebDav, dossier DLLs. Il y a maintenant deux fonctions: l'ancienne qui cherche dans un fichier, et la  nouvelle qui cherche dans une StringList. A la place de adr(Fichier$), tu passes le numéro de la StringList (entre 1 et 20) créée séparement par CreateStringList, puis chargée par la commande appropriée.

Puis, j'ai modifié ton dernier code de sorte qu'il utilise les deux méthodes pour que tu puisses comparer. Il y a deux combos pour les résultats, et un mémo pour recevoir les mesures de temps au lieu d'avoir des messages. Pour la parte StringList, j'ai colontairement ciblée la mesure de temps sur la fonction elle-même, en excluant le temps de création et de chargement de la StringList.

Voici le code:
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$:t$=" vende a domicilio . "
dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$="#"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,200

dll_on "kgf"

AvecLectureDirecte()
AvecStringList()

end



sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 100,item_read$(100,1)
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
end_sub

J'ai l'impression que les numéros de ligne retournées sont les bonnes. Mais je vais pointer plus précisément.

Je ne peux pas recourir à de multiples appels de SearchStringList du fait de la multitude de critères de recherche potentiellement générés. ll est hors de question de parcourir la StringList depuis le début, pour chaque critère.

EDIT

Vérification faite, pour la phrase du programme, les numéros de ligne sont les bons.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 18:00

J'ai testé avec le code suivant, mais malheureusement la combo reste vide !

Bien que tenían que # figure bien dans le fichier, à la ligne 812086.

Mais on avance.

Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$

t$ = "El murciélago de herradura de Willard fue descubierto en la República "
t$ = t$ + "Democrática del Congo en 2013 y lo más probable es que se extinga en unas "
t$ = t$ + "décadas . Con él , servicios prestados hasta la mitad de las especies endémicas del corazón de "
t$ = t$ + "África estarán amenazadas en los próximos 50 años . Hasta ahora tenían "
t$ = t$ + "que lidiar con el avance de los humanos , su agricultura y su ganadería , "
t$ = t$ + "que les iban comiendo su territorio . Ahora el cambio climático ha tomado "
t$ = t$ + "el relevo y les arrebatará hasta dos tercios del que les queda . A algunos "
t$ = t$ + "animales , como este quiróptero , los dejará literalmente sin espacio ."

dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=2
dim marqueur$:marqueur$=" #"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,200

dll_on "kgf"

' AvecLectureDirecte()
AvecStringList()

end

sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 100,item_read$(100,1)
  message "fin"
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
  message "fin"
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 18:24

J'ai pris ton code, j'ai réactivé les deux méthodes et déplacé le message "Fin" hors des UBS, juste avant le END. J'ai ajouté également un affichage du nombre de lignes trouvées. Voici le résultat (sans aucun changement dans la DLL):

On trouve un nombre considérable de lignes, mais le texte est grand. Alors, les pointer une à une... J'ai fait quelques verifications au hasard, mais je n'ai pas constaté d'anomalie.

Voici le code modifié::
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$

t$ = "El murciélago de herradura de Willard fue descubierto en la República "
t$ = t$ + "Democrática del Congo en 2013 y lo más probable es que se extinga en unas "
t$ = t$ + "décadas . Con él , servicios prestados hasta la mitad de las especies endémicas del corazón de "
t$ = t$ + "África estarán amenazadas en los próximos 50 años . Hasta ahora tenían "
t$ = t$ + "que lidiar con el avance de los humanos , su agricultura y su ganadería , "
t$ = t$ + "que les iban comiendo su territorio . Ahora el cambio climático ha tomado "
t$ = t$ + "el relevo y les arrebatará hasta dos tercios del que les queda . A algunos "
t$ = t$ + "animales , como este quiróptero , los dejará literalmente sin espacio ."

dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$=" #"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,300

dll_on "kgf"

AvecLectureDirecte()
AvecStringList()
message "fin"

end

sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(100))+" lignes trouvées"
  display
  text 100,item_read$(100,1)
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(101))+" lignes trouvées"
  display
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 18:29

Je viens de relancer le test avec la 2è option.

Tout fonctionne maintenant, mais le temps d'exécution est vraiment trop important.

J'obtiens res%=109297
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 18:52

Je trouve au contraire que ce résultat est assez bon. Pour un seul critère de 3 mots, j'obtiens entre 3000 et 3500 cycles, avec les deux méthodes. Ton texte contient 100 mots, donc tu as 98 critères de 3 mots. Logiquement, tu devrais avoit au moins 3000*98 = 29400 cycles. Tu obtiens un tiers du temps probable, ce qui est excellent.

Mais laisse-moi te poser une question: est-ce que le critère (le groupe de n mots) peut figurer n'importe où dans les lignes du fichier de référence, ou est-ce que ce ne peut être qu'à partir du début de ces lignes ? Cela fait une grande différence !

EDIT

Jai regardé rapidement dans le fichier. Il y a des choses qui m'étonnent, mais je ne suis pas compétant, ne parlant pas Espagnol (juste Portugais...). Entre les lignes 914766 et 017345, je constate une prolifération de "aa...aa" en fin de mot qui est tout à fait étonnante. Est-ce normal ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 19:18

J'ai fait un essai, en cherchant uniquement des lignes dont le début est identique au critère. Alors, on trouve 6 résultats, au lieu des 1665 en recherche d'existance n'importe où dans la ligne. Qu'est-ce qu'il faut faire ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 19:26

Oui Klaus, le critère de recherche ne peut figurer qu'au début d'une ligne du fichier.

C'est pour cela que je ne comprenais pas la lenteur relative de la recherche.

Pourrais-tu faire en sorte de n'utiliser que cette configuration ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 19:33

Bien. Ca clarifie la situation. Je vais revoir mon algorithme en fonction de cela.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 21:25

Petite demande de précision:
Lorsque tu crées des StringList avec KGF.dll (et en particulier celle qui utilise ce lon fichier dont tu m'as donné le lien) , est-ce que tu les crées avec le second paramètre de CreateStringList en valeur 1 ou 2 ? Quel type de tri imposes-tu ? Ansi ou Windows ? J'en ai besoin pour la stratégie de recherche...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Jeu 29 Mar 2018 - 23:55

Autre demande de précision:
Pour un critère de recherche, est-ce qu'il faut retourner TOUS les numéros d'enregistrement pour ce critère ou seulement le PREMIER ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Demande de fonction spécifique avec KGF.   Ven 30 Mar 2018 - 0:08

Bon Pedro, j'ai fait comme j'ai pu, avec ce que j'avais. J'ai mis une nouvelle version de KGF.dll dans le WebDav, dossier DLLs. J'ai complètement réécrit la partie recherche dans une StringList, et voici le résultat qui est pas mal:


Voici le programme qui va avec:
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$

t$ = "El murciélago de herradura de Willard fue descubierto en la República "
t$ = t$ + "Democrática del Congo en 2013 y lo más probable es que se extinga en unas "
t$ = t$ + "décadas . Con él , servicios prestados hasta la mitad de las especies endémicas del corazón de "
t$ = t$ + "África estarán amenazadas en los próximos 50 años . Hasta ahora tenían "
t$ = t$ + "que lidiar con el avance de los humanos , su agricultura y su ganadería , "
t$ = t$ + "que les iban comiendo su territorio . Ahora el cambio climático ha tomado "
t$ = t$ + "el relevo y les arrebatará hasta dos tercios del que les queda . A algunos "
t$ = t$ + "animales , como este quiróptero , los dejará literalmente sin espacio ."

dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$=" #"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,300
display

dll_on "kgf"

' AvecLectureDirecte()
 AvecStringList()
message "fin"

end

sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"   "+str$(count(100))+" lignes trouvées"
  display
  text 100,item_read$(100,1)
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))
  item_add 102,"Stringlist chargé."
  display

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"   "+str$(count(101))+" lignes trouvées"
  display
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
end_sub

Tu remarqueras que je crée la StringList avec un second paramètre zéro, ignorant ainsi la notion de tri. Je tombe à 18000 cycles pour l'ensemble du texte. Nettement mieux que tout ce que j'avais fait avant.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1002
Date d'inscription : 19/01/2014

MessageSujet: Demande de fonction spécifique avec KGF.   Ven 30 Mar 2018 - 7:48

Bonjour.

Pour info, les formes verbales sont déterminées dans une sub, puis enregistrées dans une dlist triée.

Il n'est donc pas question de Windows ni ANSI.

Pour répondre à ta question, je n'ai besoin que de la 1ère occurrence répondant aux critères.

J'obtiens res%=8172, ce qui est nettement mieux !

Mais encore loin du résultat de la routine postée plus avant (soit 4,5 sec).

Peut-être que le résultat sera encore meilleur en ne considérant que la 1ère occurrence.

Merci de la suite.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Demande de fonction spécifique avec KGF.   

Revenir en haut Aller en bas
 
Demande de fonction spécifique avec KGF.
Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» Demande sur itinéraire avec demi-tours sur Nuvi 3598?(remarque après 2ème essais)
» [Fermé] Demande d'optimisation mais bloqué avec ZHPDiag
» problème avec Outlook
» Déconnexions intempestives avec demande d'identification sur bbox
» j ai des souci , je debute depuis ce jour avec linux fedora

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: