| Problème avec un objet StringList (pour Klaus). | |
|
|
|
Auteur | Message |
---|
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 13:25 | |
| Bonjour.
Après vérification, l'affichage est correct dans le petit programme que je t'ai transmis.
Mais, par contre, le résultat est erroné dans mon programme global, bien que les routines utilisées soient semblables.
Merci de ton aide. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 13:51 | |
| Ca, c'est étrange. Es-tu certain d'avoir utilisé le même mode 2 comme 3ème paramètre à BDRopen ? | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 14:12 | |
| Bonjour.
Oui, j'ai bien utilisé le mode '2' pour la création de la Stringlist.
Ce qui me paraît étrange est ceci:
La recherche marche bien pour "à;", "je;" mais pas pour "ne;".
Je ne comprends vraiment pas.
Merci de ton aide. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 17:51 | |
| Re-télécharge et essaye à nouveau. Après de longues séries d'essais, k'ai fait une nouvelle version qui pourrait résoudre ton problème, bien que je n'aie pas réussi à le reproduire chez moi. Mais la recherche est maintenant plus "solide". | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 20:56 | |
| Bonsoir. Désolé Klaus, mais le problème demeure. J'ai toujours le même décalage avec ne;'. Je ne sais plus que faire.
| |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 21:01 | |
| Peut-être n'est-il pas possible de créer 2 stringlist en même temps, bien qu'ayant des numéros différents ?
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 21:04 | |
| Peux-tu faire, juste avant l'appel de la procédure chercher: - Code:
-
dim version$ version$ = string*(25," ") version% = DLL_call1("KGFdllVersion",adr(version$)) message "Version: "+version$
Je ne vois que la possibilité d'une confusion de version... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 21:06 | |
| On s'est croisé. Si, tu peux parfaitement créer plusieurs StringList simultanément, avec des numéros différents. Un peut créer jusqu'à 20 listes, numérotées de 1 à 20, et elles sont parfaitement indépendantes. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Ven 26 Avr 2013 - 21:09 | |
| Ok merci. Je testerai demain car je ne suis pas devant mon PC mais sur mon smartphone.
| |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 9:29 | |
| Bonjour.
Panoramic me donne version 221 pour KGF.dll.
Merci de la suite donnée à mon problème. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 9:32 | |
| Sans plus d'éléments, ça va être difficile. Je t'ai affiché ce que ça donne chez moi. Il faudrait que je puisse reproduire le problème. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 9:41 | |
| ou alors il faut offrir la boule de cristal... on ne sait jamais... | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 10:17 | |
| Bonjour.
J'ai résolu le problème en créant un fichier index ne reprenant que la 1ère partie des éléments du dictionnaire, dans un objet list.
Exemple, pour la ligne "né;adjms;nacido;;venu au monde", l'index ne reprend que "né;".
De cette façon, la recherche se fait correctement.
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 10:18 | |
| Mince on ne pourra pas tester les talents d'extra lucide de Klaus, je suis déçu mais bravo pour avoir trouvé la solution | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 12:41 | |
| C'est bien d'avoir trouvé une solution, Pan59, mais cela n'explique rien.
Chez moi, la recherche fonctionne à tous les coups, avec les critères que tu m'as données ainsi qu'avec des critères imaginées par moi, comme "allem;" ou "Allem;" par exemple. Là encore, il trouve le bon enregistrement.
Je veux bien faire amende honorable et corriger mon code si c'est un bug. Je n'ai jamais hésité à le faire. Mais pour cela, il fait trouver un moyen pour que je puisse reproduire le problème chez moi. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 15:50 | |
| Bonjour.
Le résultat affiché par le programme suivant donne la ligne 24156, et non la bonne ligne 24155.
24155 ne;adv;no;;négation 24156 ne;adv;non traduit;adv;dans 'jamais ... ne' + verbe
Merci de ta réponse. - Code:
-
dim element$, fichier$, rec$, temporaire$ dim numero_objet_liste%, res%, x%
fichier$="dico_français_espagnol.txt"
dll_on "kgf.dll"
' mode 2 pour le tri ASCII. res% = dll_call2("CreateStringList",1,2) res% = dll_call2("LoadStringList",1,adr(fichier$)) ' Obligatoire, afin d'obtenir le même ordre de tri. res% = dll_call2("SaveStringList",1,adr(fichier$))
' dim version$ ' version$ = string$(25," ") ' version$ = DLL_call1("KGFdllVersion",adr(version$)) ' message "Version: "+version$
element$="ne;" chercher(element$,1) x%=res%
message str$(x%)+chr$(10)+chr$(13)+trim$(temporaire$) if x%<0 if left$(temporaire$,len(element$))<>element$ then message "Non trouvé" end_if
dll_off
end
sub chercher(element$, numero_objet_liste%)
temporaire$ = string$(255," ") res% = dll_call3("SearchStringList",numero_objet_liste%,adr(element$),adr(temporaire$)) res%=abs(res%) end_sub | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 18:15 | |
| Ok. Là, je reproduis le problème et je vais le corriger. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Sam 27 Avr 2013 - 18:54 | |
| Ca y est - corrigé. Merci d'avoir montré un code qui met le problème en évidence.
KGF.dll passe à la version V2.22 du 27/04/2013. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Dim 28 Avr 2013 - 8:38 | |
| Bonjour.
Eh bien, tout a l'air de bien fonctionner maintenant.
Un grand merci Klaus.
Mais j'aimerais connaître le pourquoi du bug, sans vouloir te vexer. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Dim 28 Avr 2013 - 9:06 | |
| C'est un manque de réflexion de ma part.
J'ai créé le mode 2 avec un tri ASCII véritable, selon le code ASCII des caractères. Ce tri fonctionne parfaitement.
J"ai réalise un module de recherche spécifique pour ce mode de tri, dans SearchStringList, en utilisant un algorithme de recherche par dichotomie. Là encore, l'algorithme est sain.
Mais je n'avais pas tenu compte du fait que dans ton fichier, tu peux avoir de multiples occurrences de la même clé (le début de l'enregistrement jusqu'au premier ";"). Dès l'instant que ma recherche en trouvait un identique au critère recherché, il était accepté.
Or, il fallait, après un critère identique trouvé, regarder les lignes précédentes pour trouver la première ligne du même critère. C'est ce que j'ai ajouté. Sans cette correction, la ligne trouvée était tantôt la bonne, tantôt une des lignes suivantes, au hasard des réductions de l'intervalle par la dichotomie.
Maintenant, aucun logiciel ne peut être certifié 100 % sans bug. Et si tu découvres une autre anomalie, n'hésite pas à poster, comme tu l'as fait, un descriptif et un code pour le reproduire. Je meys un point d'honneur à corriger toutes les anomalies. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList (pour Klaus). Dim 28 Avr 2013 - 9:39 | |
| Bonjour.
Il demeure cependant un petit problème avec le programme suivant.
Le fichier index se trouve sur mon webdav.
Je pense que le problème survient lorqu'on recherche une clé complète.
Merci de ton aide à la résolution de celui-ci.
Mon drive http://www.mydrive.ch/ Identifiant: pierre59 Mot de passe: panoramic123 - Code:
-
dim element$, fichier$, rec$, temporaire$ dim numero_objet_liste%, res%, x%
fichier$="index_français_espagnol.txt"
dll_on "kgf.dll"
' mode 2 pour le tri ASCII. res% = dll_call2("CreateStringList",9,2) res% = dll_call2("LoadStringList",9,adr(fichier$)) ' Obligatoire, afin d'obtenir le même ordre de tri. res% = dll_call2("SaveStringList",9,adr(fichier$))
' dim version$ ' version$ = string$(25," ") ' version$ = DLL_call1("KGFdllVersion",adr(version$)) ' message "Version: "+version$
element$="ne;" chercher(element$,9) x%=res%
message str$(x%)+chr$(10)+chr$(13)+trim$(temporaire$) if x%<0 if left$(temporaire$,len(element$))<>element$ then message "Non trouvé" end_if
dll_off
end
sub chercher(element$, numero_objet_liste%)
temporaire$ = string$(255," ") res% = dll_call3("SearchStringList",numero_objet_liste%,adr(element$),adr(temporaire$)) res%=abs(res%) end_sub | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Dim 28 Avr 2013 - 10:12 | |
| En effet. Cependant, avec le dico complet (pas l'indexe), la recherche marchait bien. Essaie ceci, avec KGF.dll tel que tu l'as actuellement: - Code:
-
dim element$, fichier$, rec$, temporaire$ dim numero_objet_liste%, res%, x%
' fichier$="index_français_espagnol.txt" fichier$="dico_français_espagnol.txt"
dll_on "kgf.dll"
' mode 2 pour le tri ASCII. res% = dll_call2("CreateStringList",9,2) res% = dll_call2("LoadStringList",9,adr(fichier$)) ' Obligatoire, afin d'obtenir le même ordre de tri. res% = dll_call2("SaveStringList",9,adr(fichier$))
' dim version$ ' version$ = string$(25," ") ' version$ = DLL_call1("KGFdllVersion",adr(version$)) ' message "Version: "+version$
element$="ne;" chercher(element$,9) x%=res%
dim i%, s$ width 0,750 memo 1 : top 1,10 : left 1,10 : width 1,700 : height 1,400 for i%=x%-20 to x%+20 s$ = string$(255," ") res% = dll_call3("ReadStringList",9,i%,adr(s$)) item_add 1,str$(i%)+": "+trim$(s$) next i%
message str$(x%)+chr$(10)+chr$(13)+trim$(temporaire$) if x%<0 if left$(temporaire$,len(element$))<>element$ then message "Non trouvé" end_if
dll_off
end
sub chercher(element$, numero_objet_liste%)
temporaire$ = string$(255," ") res% = dll_call3("SearchStringList",numero_objet_liste%,adr(element$),adr(temporaire$)) res%=abs(res%)
end_sub Ceci dit, tu as évidemment relevé une anomalie, et je l"ai corrigé. Cela concernait le cas (typique pour ton fichier indexe), ou la clé est identique à l'enregistrement entier. C'est corrigé, et KGF.dll passe à la version V2.23. Tu peux maintenant utiliser indifféremment le dico entier ou l'indexe - le résultat sera identique. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec un objet StringList. Dim 28 Avr 2013 - 11:05 | |
| Bonjour.
Cette fois, tout fonctionne correctement.
Un grand merci Klaus.
Je vais pouvoir continuer à développer la suite de mon logiciel de traduction, bloqué depuis une semaine.
Bon dimanche.
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Problème avec un objet StringList (pour Klaus). Dim 28 Avr 2013 - 11:31 | |
| Bravo Klaus et merci pour le debuggage de cette fonction | |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème avec un objet StringList (pour Klaus). | |
| |
|
| |
| Problème avec un objet StringList (pour Klaus). | |
|