Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Problème avec StringList. | |
| | Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème avec StringList. Mer 10 Déc 2014 - 9:13 | |
| @Klaus. Bonjour. J'ai un gros problème avec l'objet StringList. En effet, la ligne retournée est fausse ! Merci de voir. - Code:
-
dim egale$, element$, fichier$, numero_ligne%, res%, temporaire$ egale$=chr$(61)
dll_on "kgf.dll"
fichier$="dico_français_anglais.txt"
CreateLoadStringList(153,1,fichier$)
element$="manger"+egale$
temporaire$ = string$(255," ") res%=dll_call3("SearchStringList",153,adr(element$),adr(temporaire$)) res%=abs(res%)
' Retourne 73754: devrait retourner zéro, car la ligne n'existe pas ! message "'"+element$+"' "+str$(res%)
if res%>1 numero_ligne%=res% temporaire$ = string$(255," ") res%=dll_call3("ReadStringList",153,numero_ligne%,adr(temporaire$))
' Retourne "manges-en tant que tu veux (conj expression) = have as many" message "'"+trim$(temporaire$)+"'" end_if
end
sub CreateLoadStringList(n%,mode%,file$) res%=dll_call2("CreateStringList",n%,mode%) if res%=0 then res%=dll_call2("LoadStringList",n%,adr(file$)) end_sub | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec StringList. Mer 10 Déc 2014 - 10:25 | |
| Où est ce fichier "dico_français_anglais.txt" ? | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème avec StringList. Mer 10 Déc 2014 - 11:36 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec StringList. Mer 10 Déc 2014 - 11:42 | |
| ????????? | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème avec StringList. Mer 10 Déc 2014 - 11:45 | |
| @Klaus.
Je viens de le renommer 'dico.txt'.
J'espère que tu pourras le télécharger maintenant.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec StringList. Mer 10 Déc 2014 - 11:53 | |
| Je l'ai eu, merci. Je vais voir ça. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec StringList. Mer 10 Déc 2014 - 12:07 | |
| 2 remarques, Pedro:1. on peut avoir des StringList de 1 à 20, pas 153... C'est dit dans la doc. Mais je reconnais que ce n'est pas sécurisé dans le code, et je corrigerai cela. En tout cas, avsc 153, ça part complètement dans les choux... 2. tu ne tiens pas compte du code erreur que la fonction retourne. En fait, la fonction retourne une valeur négative et la doc indique: - Citation :
- -ind% si liste triée et enregistrement exact inexistant: indice devant lequel il faut insérer
Mais tu écartes cette information avec - Code:
-
res%=abs(res%) et du coup, tu penses que l'enregistrement existe... 2 conseils:1. respecte les numéros des StringList de 1 à 20 2. vérifie bien le signe du code retour De mon côté, je vais prochainement mettre en ligne une version de KGF.dll qui protège contre des numéros invalides de Stringlist. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec StringList. Mer 10 Déc 2014 - 12:42 | |
| Dans le petit code que tu as posté, j'ai remplacé 153 par 13. Et j'obtiens toujours "-73754". Donc, d'une part, cela indique (par la valeur négative) que le critère recherché n'existe pas. Et d'autre part, il indique devant quel ligne le critère devrait être inséré s'il doit être ajouté au fichier. Et cette information est correcte, car: - Citation :
- 73753 manger vite (v) = to bolt one's food (down)
73754 manges-en tant que tu veux (conj expression) = have as many "manger=" s'insère bien entre les deux... | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème avec StringList. Mer 10 Déc 2014 - 13:32 | |
| @Klaus. Bonjour. Dans le code ci-dessous, la valeur retournée est négative (- 73709). Alors que la ligne existe bien: manger (figuré) (vt) = to eatMerci de m'éclairer, Klaus. Faut-il que la ligne corresponde complètement à l'élément recherché ? - Code:
-
dim egale$, element$, espace$, fichier$, numero_ligne%, res%, temporaire$ egale$=chr$(61) espace$=chr$(32)
dll_on "kgf.dll"
fichier$="dico_français_anglais.txt"
CreateLoadStringList(13,1,fichier$)
element$="manger"+espace$
temporaire$ = string$(255," ") res%=dll_call3("SearchStringList",13,adr(element$),adr(temporaire$))
' Retourne 73754 message "'"+element$+"' "+str$(res%)
if res%>1 numero_ligne%=res% temporaire$ = string$(255," ") res%=dll_call3("ReadStringList",13,numero_ligne%,adr(temporaire$))
' Retourne "manges-en tant que tu veux (conj expression) = have as many" message "'"+trim$(temporaire$)+"'" end_if
end
sub CreateLoadStringList(n%,mode%,file$) res%=dll_call2("CreateStringList",n%,mode%) if res%=0 then res%=dll_call2("LoadStringList",n%,adr(file$)) end_sub | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec StringList. Mer 10 Déc 2014 - 14:23 | |
| Oui. Le code indique que le critère recherché exact n'existe pas (donc "manger" suivi d'un espace), et indique la ligne devant laquelle ce code devrait être inséré. Il faut donc, en cas de valeur négative, tester si le début de la chaîne retournée est identique au critère recherché. Regarde cette modification: - Code:
-
dim egale$, element$, espace$, fichier$, numero_ligne%, res%, temporaire$ egale$=chr$(61) espace$=chr$(32)
dll_on "kgf.dll"
fichier$="dico_français_anglais.txt"
CreateLoadStringList(13,1,fichier$)
element$="manger"+espace$
temporaire$ = string$(255," ") res%=dll_call3("SearchStringList",13,adr(element$),adr(temporaire$))
' Retourne 73754 temporaire$ = trim$(temporaire$) message "debug: '"+element$+"' "+str$(res%)+" '"+temporaire$+"'" if res%<0 if left$(temporaire$,len(element$))=element$ then res% = 0 - res% end_if
if res%>1 numero_ligne%=res% temporaire$ = string$(255," ") res%=dll_call3("ReadStringList",13,numero_ligne%,adr(temporaire$))
' Retourne "manges-en tant que tu veux (conj expression) = have as many" message "'"+trim$(temporaire$)+"'" end_if
end
sub CreateLoadStringList(n%,mode%,file$) res%=dll_call2("CreateStringList",n%,mode%) if res%=0 then res%=dll_call2("LoadStringList",n%,adr(file$)) end_sub Je pense que ça résoud ton problème. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème avec StringList. Mer 10 Déc 2014 - 16:25 | |
| @Klaus.
OK, un grand merci Klaus.
Là, je comprends mieux. | |
| | | Contenu sponsorisé
| Sujet: Re: Problème avec StringList. | |
| |
| | | | Problème avec StringList. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |