Page 1 sur 1
[resolu] Bug DroopyLibs => Between petit bug
Publié : dim. 16/sept./2007 23:49
par Ar-S
Salut,
Voilà, j'adore la droopylibs (bravo encore !) mais j'ai découvert un petit dysfonctionnement avec la fonction between.
rappel de son fonctionnement :
Between("Dr
oopy", "Dr", "py")
prendra comme valeur
oo
J'aimerai m'en servir pour l'extraction d'URL dans un codesource, mais des qu'on recherche le symbol
" (donc le chr(34)) et bien le resultat est nul.
Voilà de quoi illustrer ce que je veux dire.
Code : Tout sélectionner
MessageRequester("Between","Resultat à afficher : caratères entre Dr et py dans le mot Droopy"+Chr(10)+"Resultat : "+ Between("Droopy", "Dr", "py"))
MessageRequester("Between2","Resultat à afficher : extraire l'url dans la source href="+Chr(34)+"http://www.purebasic.fr"+Chr(34) +Chr(10)+"Resultat : "+ Between("href="+Chr(34)+"http://www.purebasic.fr"+Chr(34), "href=http://purebasic.com"+Chr(34), Chr(34)))
Droopy si tu pouvais me dire ce qui chipote

Publié : lun. 17/sept./2007 7:20
par comtois
La section 'Rapport de bugs' de ce forum est réservée aux bugs concernant le langage PureBasic.
Pour les bugs concernant les outils, les bibliothèques des utilisateurs, il est préférable de faire un post soit directement dans le post d'annonce de l'outil ou de la bibliothèque en question ou dans une autre section du forum, comme la section 'discussion générale' par exemple.
Publié : lun. 17/sept./2007 9:13
par Ar-S
Ok désollé comptois, si un modo peut déplacer le topic dans discution générale
Publié : lun. 17/sept./2007 10:40
par Backup
Ar-S a écrit :Ok désollé comptois, si un modo peut déplacer le topic dans discution générale
fait !

Re: Bug DroopyLibs => Between petit bug
Publié : lun. 17/sept./2007 14:04
par Patrick88
Ar-S a écrit :des qu'on recherche le symbol " (donc le chr(34)) et bien le resultat est nul.
parce que les guillemets ne font pas partie de la chaine passée en paramétre...
ce sont juste des marqueurs de début et de fin ( en pascal ce sont des apostrophes ) le compilateur en a besoin pour retrouver les caractères qui composent la chaine dans la bouillie du code source.
pat
Publié : lun. 17/sept./2007 17:49
par Ar-S
C'est pour cela que j'appele bien le chr(34) dans mon code, logiquement ça devrait fonctionner, vu qu'on peut trés bien faire apparaitre :
Bonjour comme "bonjour" en utilisant
C'est pour cela que je me dis que c'est une bug
Publié : lun. 17/sept./2007 18:21
par case
tu peux contourner le probleme en utilisant un systeme de code echapement
par exemple le caractere \ suivis par un nombre sur 3 octets refererais au code ascii du caractere voulu
par exemple bonjour "monsieur" comment allez vous
deviendrais bonjour \034monsieur\034 comment allez vous
bien sur cela implique de filtrer ce que tu vas afficher ensuite et de convertir dans le meme format ce que tu entre .
c'est le principe utilisé par les navigateurs avec le fameux %20 pour espace
Publié : lun. 17/sept./2007 20:26
par Droopy
Essaye avec ça
Code : Tout sélectionner
;/ Author : Dr. Dri ( bug fixed )
Procedure.s Between(string.s, LString.s, RString.s)
Protected Between.s, lindex.l, RIndex.l
lindex = FindString(string, LString, 0)
RIndex = FindString(string, RString, lindex+Len(LString))
If lindex And RIndex
lindex + Len(LString)
Between = Mid(string, lindex, RIndex-lindex)
EndIf
ProcedureReturn Between
EndProcedure
MessageRequester("Between","Resultat à afficher : caratères entre Dr et py dans le mot Droopy"+Chr(10)+"Resultat : "+ Between("Droopy", "Dr", "py"))
MessageRequester("Between2","Resultat à afficher : extraire l'url dans la source href="+Chr(34)+"http://www.purebasic.fr"+Chr(34) +Chr(10)+"Resultat : "+ Between("href="+Chr(34)+"http://www.purebasic.fr"+Chr(34),"href="+Chr(34),Chr(34)))
Publié : mar. 18/sept./2007 7:26
par Ar-S
Superbe Droopy ça marche au poil, il a juste fallu que je donne un nouveau nom à la procédure vu que between est utilisée en externe (ce que me dit PB).
En tout cas, ce bug fixed va sûrement me permettre de bien avancer dans la création de mon petit navigateur web.
Alors grosse grosse papouille à toi !
