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
» Biomorphe de Pickover
par papydall Aujourd'hui à 0:49

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Dim 23 Sep 2018 - 22:14

» Planétarium virtuel.
par Pedro Alvarez Dim 23 Sep 2018 - 19:50

» Virus/Antivirus
par JL35 Dim 23 Sep 2018 - 10:55

» Calculatrice
par papydall Ven 21 Sep 2018 - 22:45

» Orbites de l’ensemble de Mandelbrot
par Minibug Ven 21 Sep 2018 - 21:32

» Demande pour Jack concernant PanExpress
par Minibug Ven 21 Sep 2018 - 11:04

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Demande de fonction spécifique avec KGF.

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

avatar

Nombre de messages : 11088
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 - 15:43

Bon, j'ai remplacé l'agorithme de recherche par une approche par dichotomie, en chargeant le fichier dans une StringList triée ASCII (mode 2 dans CreateStringList). Le chargement prend un peu de temps, mais c'est normal - le fichier est trié à ce moment précis. Mais c'est une opération que tu fais normalement au démarrage, une fois. A partir de là, la recherche est ultra-rapide. Pour le texte de 100 mots, voici le résultat:


Voici le programme Panoramic:
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$, rec$

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%, 2)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))
'  fichier$ = "new.txt"
'  res% = dll_call2("SaveStringList",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)
  if count(101)>0
    rec$ = string$(255," ")
    res% = dll_call3("ReadStringList",SL%,val(text$(101)),adr(rec$))
    item_add 102,text$(101)+" = "+trim$(rec$)
  end_if
 
  res% = dll_call1("DeleteStringList",SL%)
end_sub


16 cycles pour 100 mots - ça va ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

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

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

Bonjour.

Alors là bravo !

En prenant un nombre de mots successifs égal à 2, j'obtiens un nombre de cycle de zéro !

La recherche est donc ultra-rapide, on ne pourrait pas mieux faire.

Je te remercie beaucoup d'avoir consacré tout ce temps à la création d'une seule fonction, et rien que pour moi.

Une petite question: est-il possible de remplacer la StringList par un objet Dlist ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
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 - 18:16

Citation :
Une petite question: est-il possible de remplacer la StringList par un objet Dlist ?
Non, malheureusement pas. Bien que, techniquement, ce soit le même objet de façon interne, je n'ai aucun accès aux données d'un DLIST à partir de la DLL. Un problème d'incoimpatibilité des gestionnaires de mémoire entre celui de la DLL et celui de Panoramic. Ceci était d'ailleurs la raison pour laquelle j'ai créé l'objet StringList, à l'époque.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
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 3 sur 3Aller à la page : Précédent  1, 2, 3
 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: