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 :

[VB6]Problème de DoubleQuote envoyé en ligne de commande par l'OS


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut [VB6]Problème de DoubleQuote envoyé en ligne de commande par l'OS
    Bonjour,

    J'ai crée une association entre certain type de fichier et mon programme.
    Lorsque je lance le fichier, mon programme associé se lance automatiquement et récupère l'argument envoyé par ligne de commande par l'OS.

    Dans mon Formulaire principal, je récupère cet argument pour lancer directement le fichier via mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ...
    'Récupération de la ligne de commande éventuelle passée en argument
    CmdLine = Command()
    CmdLnLen = Len(CmdLine)
    'Ouverture si nécéssaire du fichier
    If CmdLine <> "" And CmdLnLen > 0 Then
        If Dir(CmdLine, vbHidden) <> "" Then
            ' File number
            FileNum = FreeFile
            ' Type scenario
            Scenario_Len = CmdLnLen
           ' Open the file which contains the scenario
            Open CmdLine For Random As FileNum Len = Scenario_Len + 10000
            Get #FileNum, 1, ScenarioData
            Get #FileNum, 2, AnAssociation
            Get #FileNum, 3, Strats
            Close
    		....
    Ceci marche très bien sauf sur certain poste où l'OS renvoie la ligne de commande entre double quote ...

    Exemple :
    Si je fais le code suivant pour tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox "CmdLine : " & CmdLine
    MsgBox "CmdLnLen: " & CmdLnLen
    1 ) Cas qui fonctionne sur certain PC:
    -> CmdLine : D:\JFS\...\MonFichier.monExtension
    -> CmdLnLen : 42

    2 ) Cas qui pause problème:
    -> CmdLine : "D:\JFS\...\MonFichier.monExtension"
    -> CmdLnLen : 42

    De plus vous remarquerez que la longueur de la chaine est identique ...

    Bref, comment supprimer ces doubles quotes ...
    un Replace(MaChaine, """, "") ... ne fonctionne pas

    Comment expliquez vous ce phénomène en fonction des PC ... surtout que mon problème apparait sur 2 PC de même config et service pack (2000 SP4)

    Merci d'avance pour votre aide

    ++

  2. #2
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un Replace(MaChaine, """, "") ... ne fonctionne pas
    Et si tu remplaces les doubles par des espaces (" ") ?
    Scuse me while I kiss the sky ! Jimi Hendrix

  3. #3
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    En fait quand je dit :
    Replace(MaChaine, """, "") ... ne fonctionne pas
    C'est que VB6 n'accepte pas cette synthaxe.

    Il doit sûrement exister un charactère pour dire de ne pas interpréter la " par le compilateur VB6

    Genre le \ en java que l'on mets devant une "

    Merci d'avance pour votre aide

    ++

  4. #4
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Syntaxe simple de la fonction Replace(expression, find, replacewith)
    Citation Envoyé par MSDN
    si replacewith a une longueur nulle Replace envoie une copie de l'expression, toutes les occurrences de find étant retirées.
    Je vois juste une différence entre "" (qui a une longueur nulle) et " " .
    Scuse me while I kiss the sky ! Jimi Hendrix

  5. #5
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Replace(MaChaine, """, "")

    C'est ce morceau qui pose problème au compilateur VB.
    La synthaxe est incorrecte ...

    Si j'avais la chaine :
    'D:\JFS\...\MonFichier.monExtension'
    Un Replace(MaChaine, "'", "") ferait l'affaire.

    Là, je dois gérer des " qui est interprété par VB comme un délimiteur de chaine ... donc je vois pas trop comment faire.

    Ou alors, je comprends pas bien ce que tu veux me dire.

    Merci d'avance pour votre aide.

    ++

  6. #6
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Ah oki maintenant je vois mieux, le problème peut être contourné en utilisant le code ascii du caractère spécial

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(MaChaine, chr(34) , "")
    Scuse me while I kiss the sky ! Jimi Hendrix

  7. #7
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    OK merci !

    J'y avais pensé, mais ne connaissant pas le code ascii de la quote

  8. #8
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par Sophos
    n'oubli donc pas le tag [RESOLU].
    Scuse me while I kiss the sky ! Jimi Hendrix

  9. #9
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par Bujuman
    Citation Envoyé par Sophos
    n'oubli donc pas le tag [RESOLU].
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par marsup54
    ....
    Il doit sûrement exister un charactère pour dire de ne pas interpréter la " par le compilateur VB6

    Genre le \ en java que l'on mets devant une "

    ....
    ++
    en passant .. il suffit de doubler les " ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(MaChaine, """" , "")

  11. #11
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Avril 2003
    Messages : 288
    Points : 165
    Points
    165
    Par défaut
    Je n'oublie pas le Tag Résolu ... mais j'espère encore comprendre pourquoi en fonction des postes client, l'OS me renvoie tantôt le Path du fichier entre double quote ou pas.

    Phénomène que je trouve très étrange ...

    En remarque, ce problème est lié au post suivant :
    http://www.developpez.net/forums/sho...d.php?t=215265

    Si je mets %L dans la ligne ci dessous, la ligne de commande correspond au chemin "Long".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b.regwrite "HKCR\" & FileType & "\shell\open\command\", FileName & " %L"
    Avec %1, la ligne de commande retournée correspond au chemin "Court"
    Par contre, j'ai toujours de façon aléatoire le chemin entre double quote ou non

    Si vous avez une idée, d'avance merci

    ++

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/08/2009, 15h13
  2. Réponses: 2
    Dernier message: 13/06/2008, 11h56
  3. [Mail] Problème étrange avec PHP en ligne de commande
    Par jojosbiz dans le forum Langage
    Réponses: 3
    Dernier message: 21/05/2007, 14h04
  4. Problème de connexion FTP en ligne de commandes
    Par goldorax113 dans le forum Développement
    Réponses: 1
    Dernier message: 30/10/2006, 12h25
  5. Réponses: 11
    Dernier message: 20/12/2005, 16h29

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