IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Comportement de la fonction Replace


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2010
    Messages : 60
    Points : 54
    Points
    54
    Par défaut Comportement de la fonction Replace
    Voici une fonction toute simple de remplacement des caractères (j'ai retiré la gestion des erreurs pour le post).

    Lorsque je l'utilise ainsi, elle me remplace comme prévu la chaine de recherche dans ma chaine d'entrée :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function repChars(repstr As String)
        repstr = Replace(repstr, "GET /webi/viewers/rep.wiqt/", ";")
    End Function

    En revanche, avec certaines chaines de recherche, comme celle-ci :


    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function repChars(repstr As String)
        repstr = Replace(repstr, "openDocument", ";")
    End Function

    Elle ne me renvoie rien...

    Quelqu'un comprend ce comportement ?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    cela veut dire que ta chaine n'est exactement pas ce que tu crois qu'elle est...
    Il y a fortr à parier qu'elle contient un caractère NULL à son début

    Fais cette petite expérience :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     lachaine = "blabla openDocument blabla"
      lachaine = Replace(lachaine, "openDocument", ";")
      MsgBox lachaine
      lachaine = Chr(0) & "blabla openDocument blabla"
      lachaine = Replace(lachaine, "openDocument", ";")
      MsgBox lachaine
    EDIT :
    puis fais celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     lachaine = Chr(0) & "blabla openDocument blabla"
      pos = InStr(lachaine, Chr(0))
      lachaine = Mid(lachaine, pos + 1)
      lachaine = Replace(lachaine, "openDocument", ";")
      MsgBox lachaine
    Tu devrais y voir clair

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2010
    Messages : 60
    Points : 54
    Points
    54
    Par défaut
    Merci pour ton aide

    Pourtant, ma chaine est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    192.50.200.147 - - [17/Oct/2008:15:28:18 +0200] "GET /webi/viewers/rep.wiqt/openDocument.jsp?skin=skin_default
    &lang=fr&name=Liste+des+annonces&id=880&repotype=0&doctype=rep&entry=&ViewType=X&iventrystore=ctxdoc_docToken&wait=N HTTP/1.1" 200 3934
    Je la visu avec notepad++.

    Je vais essayer tes tests, merci.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Il n'y a pas de comportement étrange...
    L'erreur c"est toi qui la fait quelque part dans ton programme.

    1.Comment mets-tu la valeur dans ta variable?

    en lisant le fichier avec "input", "Line input"...

    2.As-tu aussi vérifier la valeur de ta variable ,non pas avec Notepad,
    mais dans ton programme par exemple en insérant un stop, puis voir le contenu
    de ta variable string

    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2010
    Messages : 60
    Points : 54
    Points
    54
    Par défaut
    Quand je dis "comportement étrange", c'est seulement un abus de langage,
    je ne mets pas en doute la fiabilité de visual studio

    En fait c'est la syntaxe de ma fonction qui était en cause, après réécriture, comme ceci :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function repChars(repstr As String) As Variant
        Dim titi As Variant
        titi = Replace(repstr, "openDocument", ";")
        repChars = titi
    End Function

    elle fait ce que j'attends d'elle.

    Merci pour votre aide.

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Bonjour,

    il suffisait de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function repChars(repstr As String) As Variant
        repstr = Replace(repstr, "openDocument", ";")
    End Function
    
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Function repChars(repstr As String) As String
        repChars = Replace(repstr, "openDocument", ";")
    End Function
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] Fonction Replace en ODBC
    Par Alexandre T dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2007, 11h02
  2. Fonction replace
    Par mpat dans le forum ASP
    Réponses: 2
    Dernier message: 30/08/2005, 09h59
  3. Fonction replace
    Par pmboutteau dans le forum ASP
    Réponses: 11
    Dernier message: 10/06/2005, 09h42
  4. PB avec la fonction replace
    Par Techman128 dans le forum C++
    Réponses: 6
    Dernier message: 24/02/2005, 11h39
  5. Fonction replace
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 10/06/2004, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo