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("Droopy", "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

Code : Tout sélectionner

mesagerequester("info",chr(34)+"bonjour"+chr(34)) 
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 !

:P