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 | 
 

 Problème avec la nouvelle fonction de kgf.

Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Pedro Alvarez

avatar

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

MessageSujet: Problème avec la nouvelle fonction de kgf.   Ven 30 Mar 2018 - 19:49

Bonsoir.

J'ouvre un nouveau post, car je rencontre un petit problème avec la nouvelle fonction de kgf.

L'item affiché correspond en fait à la ligne+1 du fichier.

En effet, tenían que # figure bien dans le fichier, et c'est cette ligne qui devrait apparaître, et non la suivante, qui est tenían que hacer #.

Pourrais-tu réaliser un test de ton côté ?

Code:
' test_SearchMultipleStringsInTextFile.bas

dim k%, res%, ticks, fichier$, rec$, m$

dim t$

t$="Ellos tenían que lidiar."

m$="*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 e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "kgf"

AvecStringList()
message "fin"

end

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$))
  item_add 102,"Stringlist chargé."
  display

  m$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*by*for*it*of*to*with*"
  e$=" #"
  
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(3),adr(m$),nombre%,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"  "+str$(count(3))+" ligne trouvée"
  display
  text 3,item_read$(3,1)
  if count(3)>0
     for k%=1 to count(3)
         rec$ = string$(255," ")
         res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
         item_add 102,text$(3)+" = "+trim$(rec$)
    next k%
  end_if
  
  res% = dll_call1("DeleteStringList",SL%)
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: Problème avec la nouvelle fonction de kgf.   Ven 30 Mar 2018 - 20:48

J'ai modifié la DLL dans le WebDav, diossier DLls. Est-ce que c'est bon comme ça ?
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: Problème.   Ven 30 Mar 2018 - 20:55

Bonsoir.

Oui, tout est OK maintenant.

Encore merci Klaus.
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: Problème avec la nouvelle fonction de kgf.   Ven 30 Mar 2018 - 21:01

Eh bien, on y est arrivé ! J'aime bien ce genre de co-production ciblée sur un problème bien particulier. Un défi technique que je n'hésite jamais à relever !
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: Problème.   Sam 31 Mar 2018 - 8:34

Bonjour.

J'ai trouvé une astuce afin de réduire encore un peu plus la durée d'exécution de la fonction sur de très gros fichiers.

Etant donné que ces fichiers ont déjà été créés en amont, je les sauvegarde une nouvelle fois, juste après leur création, en utilisant le paramètre de tri 2, comme suit.
Ce qui me permet, lors des phases ultérieures de recherche d'éléments, de remplacer ce paramètre par 0, d'où un gain de temps important visible au chargement.

Qu'en penses-tu ?

Code:
res% = dll_call2("CreateStringList",SL%, 2)
res% = dll_call2("LoadStringList",SL%,adr(fichier$))
res% = dll_call2("SaveStringList",SL%,adr(fichier$))
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: Problème avec la nouvelle fonction de kgf.   Sam 31 Mar 2018 - 8:51

Excellente idée. C'est exactement 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: Problème.   Sam 31 Mar 2018 - 19:49

Bonsoir.

Klaus, je rencontre un problème avec le code suivant, bien que les 2 mots du texte figurent dans le fichier.
La fonction ne trouve aucune occurrence.

L'adresse de téléchargement du fichier txt est indiquée en ligne 1 du code.

Merci de ton aide.


Code:
' http://dl.free.fr/grhHSENUY

' test_SearchMultipleStringsInTextFile.bas

dim k%, res%, ticks, fichier$, rec$, m$

dim t$

t$=" actualmente inmediatamente . "

fichier$="mots_autres_espagnol_français.txt"
dim nombre%:nombre%=1
dim e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "kgf"

AvecStringList()
message "fin"

end

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
  
  ' Création sans tri, le tri ayant été réalisé lors de l'indexation du dico.
  res% = dll_call2("CreateStringList",SL%,2)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))  
  res% = dll_call2("SaveStringList",SL%,adr(fichier$))
  item_add 102,"Stringlist chargé."
  display

  m$="*zz*"
  e$=";"
  
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(3),adr(m$),nombre%,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"  "+str$(count(3))+" ligne trouvée"
  display
  text 3,item_read$(3,1)
  if count(3)>0
     for k%=1 to count(3)
         rec$ = string$(255," ")
         res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
         item_add 102,text$(3)+" = "+trim$(rec$)
    next k%
  end_if
  
  res% = dll_call1("DeleteStringList",SL%)
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: Problème avec la nouvelle fonction de kgf.   Dim 1 Avr 2018 - 0:11

Ben oui... tu as un problème de cohérence.

Alors que dans l'autre fichier, c'étaient des phrases dont les mots étaient séparés par des espaces et qui étaient terminées également par un espace, suivi du #, tu as ici de simples mots, sans aucun espace. Et donc, ma construction du critère de recherche produisant un mot suivi d'un espace, ne peut pas conduire à trouver un élément.

Je vais réfléchir à adapter la fonction pour qu'elle marche dans les deux cas. Mais ce n'est pas simple: comment faire la différence entre une recherche dans un fichier contenant des phrases mais un cherche seulement un mot unique et le cas qui noue intéresse ici ? Encore plus délicat: comment décider entre "fatal"
et "fatalmente" ? Jusqu'à maintenant, pour le mot "fatal", je cherchais "fatal " dans le fichier, et j'aurais bien trouvé "fatal" et pas "fatammente". Encore que... dans le fichier des phrases, j'avais un espace avant de dièse, mais ici, il n'y a pas d'espace avant le sémicolon.

Je vais réfléchir à ça...
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: Problème avec la nouvelle fonction de kgf.   Dim 1 Avr 2018 - 0:38

J'ai trouvé une façon de coder qui marche dans les deux cas. La nouvelle DLL est dans le WebDav, dossier DLLs.

Accessoirement, il y é un mini-changement dans le code Panoramic, sans influence sur la recherche, juste au niveau de l'affichage du résultat:
Code:
' http://dl.free.fr/grhHSENUY

' test_SearchMultipleStringsInTextFile.bas

dim k%, res%, ticks, fichier$, rec$, m$

dim t$

t$=" actualmente inmediatamente . "

fichier$="mots_autres_espagnol_français.txt"
dim nombre%:nombre%=1
dim e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "KGF.dll"

AvecStringList()
message "fin"

end

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
 
  ' Création sans tri, le tri ayant été réalisé lors de l'indexation du dico.
  res% = dll_call2("CreateStringList",SL%,2)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$)) 
'  res% = dll_call2("SaveStringList",SL%,adr(fichier$))
  item_add 102,"Stringlist chargé."
  display

  m$="*zz*"
  e$=";"
 
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(3),adr(m$),nombre%,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(3))+" ligne trouvée"
  display
  text 3,item_read$(3,1)
  if count(3)>0
    for k%=1 to count(3)
        rec$ = string$(255," ")
        res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
        item_add 102,item_read$(3,k%)+" = "+trim$(rec$)
    next k%
  end_if
 
  res% = dll_call1("DeleteStringList",SL%)
end_sub
Le changement est dans la ligne 53 pour afficher le bon numéro de ligne.
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: Problème.   Dim 1 Avr 2018 - 11:11

Bonjour.

Merci Klaus, la commande fonctionne bien dans tous les cas de figure.

Un grand pas en avant assurément.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Pedro Alvarez

avatar

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

MessageSujet: Problème.   Dim 1 Avr 2018 - 16:37

Bonjour.

Klaus, j'ai encore un petit problème avec cette fonction.

Lorsque j'utilise le paramètre 2 dans la fonction CreateStringList, tout va bien.
Mais ensuite, si j'utilise le paramètre 0, seuls 2 mots sont trouvés au lieu de 3.
Le mot enfin n'est pas trouvé.
Merci de la suite.

Le fichier txt est téléchargeable à l'adresse indiquée à la 1ère ligne du code.

Code:
' http://dl.free.fr/kFIEDYzs4

' test_SearchMultipleStringsInTextFile.bas

dim k%, res%, ticks, fichier$, rec$, m$

dim t$

t$=" certes enfin selon . "

fichier$="mots_autres_français_espagnol.txt"
dim nombre%:nombre%=1
dim e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "KGF.dll"

AvecStringList()
message "fin"

end

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
  
  ' Création sans tri, le tri ayant été réalisé lors de l'indexation du dico.
  res% = dll_call2("CreateStringList",SL%,2)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))  
'  res% = dll_call2("SaveStringList",SL%,adr(fichier$))
  item_add 102,"Stringlist chargé."
  display

  m$="*zz*"
  e$=";"
  
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(3),adr(m$),nombre%,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"  "+str$(count(3))+" ligne(s) trouvée(s)"
  display
  text 3,item_read$(3,1)
  if count(3)>0
    for k%=1 to count(3)
        rec$ = string$(255," ")
        res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
        item_add 102,item_read$(3,k%)+" = "+trim$(rec$)
    next k%
  end_if
  
  res% = dll_call1("DeleteStringList",SL%)
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: Problème avec la nouvelle fonction de kgf.   Dim 1 Avr 2018 - 21:41

Bizarre. Je n'ai pas ce problème.

J'ai modifié ton code pour sauvegarder la StringList triée dans un autre fichier lors du premier lancement. Là, on trouve bien 3 lignes. A tous les lancements suivants, le programme découvre que ce second fichier existe déjà, puis charge ce second fichier en mode 0. Et résultat: on trouve bien 3 lignes.

Voici le code avec cette modification:
Code:
' http://dl.free.fr/kFIEDYzs4

' test_SearchMultipleStringsInTextFile.bas

dim k%, res%, ticks, fichier$, fichier2$, rec$, m$

dim t$

t$=" certes enfin selon . "

fichier$="mots_autres_français_espagnol.txt"
fichier2$="mots_autres_français_espagnol_2.txt"
dim nombre%:nombre%=1
dim e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "KGF.dll"

AvecStringList()
message "fin"

end

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
 
  if file_exists(fichier2$)=1
    ' Création sans tri, le tri ayant été réalisé lors de l'indexation du dico.
    res% = dll_call2("CreateStringList",SL%,0)
    res% = dll_call2("LoadStringList",SL%,adr(fichier2$))
  else
    ' Création sans tri, le tri ayant été réalisé lors de l'indexation du dico.
    res% = dll_call2("CreateStringList",SL%,2)
    res% = dll_call2("LoadStringList",SL%,adr(fichier$))
    res% = dll_call2("SaveStringList",SL%,adr(fichier2$))
  end_if
  item_add 102,"Stringlist chargé."
  display

  m$="*zz*"
  e$=";"
 
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(3),adr(m$),nombre%,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(3))+" ligne(s) trouvée(s)"
  display
  text 3,item_read$(3,1)
  if count(3)>0
    for k%=1 to count(3)
        rec$ = string$(255," ")
        res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
        item_add 102,item_read$(3,k%)+" = "+trim$(rec$)
    next k%
  end_if
 
  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: Problème.   Lun 2 Avr 2018 - 8:34

Bonjour.

Oui, effectivement, cela fonctionne, mais c'est tout de même incompréhensible !

Je ne comprends vraiment pas pourquoi la fonction pose un tel problème.

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: Problème avec la nouvelle fonction de kgf.   Lun 2 Avr 2018 - 9:34

Citation :
Merci de la suite.
??? Ca ne marche pas, chez toi ? Chez moi, je n'ai aucun problème, avec le code que j'ai posté...
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: Problème.   Lun 2 Avr 2018 - 9:35

Bonjour.

Si, tout fonctionne parfaitement en créant un second fichier.
Mais par contre, la première méthode ne fonctionne pas, désolé.

Pourrais-tu approfondir le sujet, car le problème m'inquiète.

Merci.
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: Problème avec la nouvelle fonction de kgf.   Lun 2 Avr 2018 - 10:07

Mais, quelle "première" méthode ? Je ne comrpends pas.
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: Problème.   Lun 2 Avr 2018 - 10:08

Eh bien, je parlais de la méthode précédente, sans passage par la sauvegarde dans un second fichier.
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: Problème avec la nouvelle fonction de kgf.   Lun 2 Avr 2018 - 10:13

Tu parles de ce code-là:
Code:
' http://dl.free.fr/kFIEDYzs4

' test_SearchMultipleStringsInTextFile.bas

dim k%, res%, ticks, fichier$, rec$, m$

dim t$

t$=" certes enfin selon . "

fichier$="mots_autres_français_espagnol.txt"
dim nombre%:nombre%=1
dim e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "KGF.dll"

AvecStringList()
message "fin"

end

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
 
  ' Création sans tri, le tri ayant été réalisé lors de l'indexation du dico.
  res% = dll_call2("CreateStringList",SL%,2)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$)) 
'  res% = dll_call2("SaveStringList",SL%,adr(fichier$))
  item_add 102,"Stringlist chargé."
  display

  m$="*zz*"
  e$=";"
 
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(3),adr(m$),nombre%,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(3))+" ligne(s) trouvée(s)"
  display
  text 3,item_read$(3,1)
  if count(3)>0
    for k%=1 to count(3)
        rec$ = string$(255," ")
        res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
        item_add 102,item_read$(3,k%)+" = "+trim$(rec$)
    next k%
  end_if
 
  res% = dll_call1("DeleteStringList",SL%)
end_sub
Il fonctionne parfaitement, mais utilise du temps à chaque lancement pour trier le fichier, puisqu'il y a le paramètre 2 pour CreateStringList.
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: Problème.   Lun 2 Avr 2018 - 10:15

Oui, c'est exactement cela Klaus.

Ce qui me gêne, est l'obligation de sauvegarder le fichier dans un second fichier.
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: Problème avec la nouvelle fonction de kgf.   Lun 2 Avr 2018 - 10:29

Eh bien, compare les deux fichiers, et tu verras. Les enregistrements ne sont pas du tout dans le même ordre. La StringList créée avec le mode 2 trie automatiquement les enregistrements selon la valeur ASCII des caractères. C'est ce qui permet ensuite la recherche ultra-rapide par dichotomie. Or, un objet DLIST avec l'attribut SORT_ON produit un autre ordre qui est celui de Windows, traitant les caractères spéciaux et les accentués tout à fait différemment. C'est la raison pour laquelle un fichier sauvegardé à partir d'un DLIST ne peut pas être chargé dans un STringList avec l'option 0 cequi serait le plus rapide.

Il n'y a donc rien d'inquétant. Une fois le fichier créé à partir d'une DLIST, il faut le sauvegarder avec FILE_SAVE, puis charger dans un StringList créé avec le mode 2, à l'aide de la fonction LoadStringList, puis réenregistré à l'aide de la fonction SaveStringList. Il est alors dans le bon format pour être ouvert avec CreateStringList en mode 0 puis LoadStringList ce qui est trés rapide, pour tout usage ultérieur.

EDIT

Cette différence dans l'ordre de tri est d'ailleurs la raison pour laquelle j'avais posé la question sur l'ordre de tri au début de cette discussion: Windows ou ASCII. Une DLIST triée utilise l'ordre Windows (normal - c'est un objet Windows). Et là, l'ordre des enregistrements dépend de la langue du pays et de la valeur du CodePage utilisé. Or, pour la recherche par dichotomié, il faut un tri strict selon les valeurs ASCII, c'est-à-dire les valeurs binaires de chaque caractère. C'était la raison de l'introduction du mode 2 pour les StringList.
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: Problème.   Lun 2 Avr 2018 - 10:44

Tout cela a le mérite d'être très clair.

Mais c'est là où je ne comprends pas.

Dans le code suivant, pourquoi sauvegarder dans un second fichier, à partir de la même StringList ?
Pourquoi ne pas simplement sauvegarder dans le même fichier ?

Là, j'ai besoin que tu éclaires ma lanterne !

Code:
res% = dll_call2("LoadStringList",SL%,adr(fichier$))
res% = dll_call2("SaveStringList",SL%,adr(fichier2$))
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: Problème avec la nouvelle fonction de kgf.   Lun 2 Avr 2018 - 10:55

Oh, simplement par sécurité, car je ne sais pas comment tu utiliseras le ou les fichiers par la suite. Car su tu essaies de recharger le fichier créé par SaveStringList dans un DLIST avec SORT_ON, ça risque de ne pas fonctionner très bien. Mais si tu le charges dans un DLIST sans SORT_ON, il n'y a pas de problème.

Cela dépend donc simplement de l'utilisation que tu veux en faire après. Tant que tu utilises la DLIST pour le créer initialement, puis CreateStringList mode 2 avec LoadStringList puis Save StringList pour créer la version qui sera vraiment exploitée de façon répétitive, alors il n'y a pas de problème: tu peux le réécrire dans le moeme fichier.
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: Problème.   Mer 4 Avr 2018 - 17:33

Bonjour.

Je rencontre un problème avec cette fonction.

Aucun résultat n'est trouvé, ce qui n'est pas correct.

Par contre, si je remplace le sujet de la phrase par 'il', deux lignes sont trouvées.

Dans le cas initial, puisque 'le' figure dans la liste des exceptions, il semblerait que le traitement soit interrompu.

Merci de la suite Klaus.

Code:
dim chaine$, k%, res%, ticks, fichier$, flag2%, rec$, m$

fichier$="formes_verbales_français_espagnol_sans_complement.txt"

dim e$

combo 100
combo 3 : left 3,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,500 : height 102,400:font_size 102,14:font_bold 102
display

dll_on "KGF.dll"

AvecStringList()
message "fin"

end

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$))

  item_add 102,"Stringlist chargé."
  display

  chaine$=" le chat mange une souris . "
  flag2%=0
  m$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*by*for*it*of*to*with*"
  e$=right$(" #",flag2%+1)
  ' message "["+e$+"]"
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(chaine$),flag2%+1,handle(3),adr(m$),flag2%+1,adr(e$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  
  item_add 102,"  "+str$(count(3))+" ligne(s) trouvée(s)"
  display
  text 3,item_read$(3,1)
  if count(3)>0
    for k%=1 to count(3)
        rec$ = string$(255," ")
        res% = dll_call3("ReadStringList",SL%,val(item_read$(3,k%)),adr(rec$))
        item_add 102,item_read$(3,k%)+" = "+trim$(rec$)
    next k%
  end_if
  
  res% = dll_call1("DeleteStringList",SL%)
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: Problème avec la nouvelle fonction de kgf.   Mer 4 Avr 2018 - 18:57

Tu peux me passer le fichier stp ?
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: Problème.   Mer 4 Avr 2018 - 20:01

Bonsoir.

Le fichier txt est téléchargeable ici:

dl.free.fr/hRWeHfCUu

Ajoute http:// avant l'adresse.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   

Revenir en haut Aller en bas
 
Problème avec la nouvelle fonction de kgf.
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Souci avec la nouvelle MAJ Firefox
» [résolu]Problème avec openrunner
» [/résolu] problème avec java à l'instalation :-/
» Problème avec Java
» [Résolu] problème avec avira

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: