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
» Gestion d'un système client-serveur.
Problème avec la nouvelle fonction de kgf. Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Problème avec la nouvelle fonction de kgf. Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Problème avec la nouvelle fonction de kgf. Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Problème avec la nouvelle fonction de kgf. Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème avec la nouvelle fonction de kgf. Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Problème avec la nouvelle fonction de kgf. Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Problème avec la nouvelle fonction de kgf. Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Problème avec la nouvelle fonction de kgf. Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Problème avec la nouvelle fonction de kgf. Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Problème avec la nouvelle fonction de kgf. Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Problème avec la nouvelle fonction de kgf. Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Problème avec la nouvelle fonction de kgf. Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Problème avec la nouvelle fonction de kgf. Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Problème avec la nouvelle fonction de kgf. Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Problème avec la nouvelle fonction de kgf. Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

 

 Problème avec la nouvelle fonction de kgf.

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

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyVen 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyVen 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyVen 30 Mar 2018 - 20:55

Bonsoir.

Oui, tout est OK maintenant.

Encore merci Klaus.
Revenir en haut Aller en bas
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyVen 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptySam 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptySam 31 Mar 2018 - 8:51

Excellente idée. C'est exactement ce qu'il faut faire.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptySam 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyDim 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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyDim 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyDim 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
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyDim 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyDim 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyLun 2 Avr 2018 - 10:07

Mais, quelle "première" méthode ? Je ne comrpends pas.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyLun 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
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyMer 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
Klaus

Klaus


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Re: Problème avec la nouvelle fonction de kgf.   Problème avec la nouvelle fonction de kgf. EmptyMer 4 Avr 2018 - 18:57

Tu peux me passer le fichier stp ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Problème avec la nouvelle fonction de kgf. Empty
MessageSujet: Problème.   Problème avec la nouvelle fonction de kgf. EmptyMer 4 Avr 2018 - 20:01

Bonsoir.

Le fichier txt est téléchargeable ici:

http://dl.free.fr/hRWeHfCUu

Ajoute http:// avant l'adresse.
Revenir en haut Aller en bas
Contenu sponsorisé





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

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
-
» Problème avec SendStringAsText.
» Problème avec select case Probleme réglé merci
» Problème avec GenerateMaskFragments.
» Nouvelle DLL avec les fonctions d'impression
» Dlls compilees nouvelle version avec gestion clipboard texte

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: