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

Langage Delphi Discussion :

[DELPHI] String contenant un pipe |


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Par défaut [DELPHI] String contenant un pipe |
    Bonjour,

    j'ai une string s (qui contient une ligne de commande) avec un pipe au milieu :

    du style : "c:\program files\toto.exe" - | "c:\aften.exe" ...

    Sauf que lorsque je stocke ma chaine dans une tstringlist en faisant list.add(s), et bien seule la prtie AVANT le | est stockée !!

    Comment remédier à ce problème ? J'ai l'impression que Delphi interprète le caractère | comme un retour à la ligne ou un truc du genre.

    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 071
    Par défaut
    Tu n'es pas obligé de taggé [DELPHI], c'est une section dédiée à Delphi
    Par contre, tu peux taggé avec la version [D7], [DXE2] ...

    J'ai testé en BCB2007
    Je n'ai aucun problème !
    Comme utilises-tu la chaine par la suite ?
    Pense que l'espace est considéré comme un Séparateur, mais je crois pas que cela affecte Add mais plutôt Text ou DelimitedText
    StrictDelimiter corrige ce problème à partir de 2005

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
      TStringList *SL = new TStringList();
      SL->Add("\"c:\\program files\\toto.exe\" - | \"c:\\aften.exe\"");
      ShowMessage(SL->Strings[0]);
      ShowMessage(SL->Text);
      delete SL;
     
      SL = new TStringList();
      SL->Add("c:\\program files\\toto.exe - | c:\\aften.exe");
      ShowMessage(SL->Strings[0]);
      ShowMessage(SL->Text);
      delete SL;
    }

    Strings et Text contiennent tous les deux la chaine entière !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Non y'a pas de raison particulière, fait voir ton code..

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 298
    Par défaut
    Je crois que extractstrings avec comme séparateurs ' ' et '|' et refusant les strings nuls fera l'affaire. Il remplira les 2 premiers éléments de la stringliste

    Fred

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 071
    Par défaut
    Justement, il ne semble pas vouloir découper sinon il n'aurait pas utilisé Add, il a une perte de contenu (ou il est en [1] ou [2])

    Mais effectivement ExtractStrings a un comportement similaire à StrictDelimiter mais existe depuis longtemps !
    Cela comporte le défaut de gérer les guillemets double " comme un séparateur, du coup le problème de découpage se déplace !

    ExplodeLazy est strict de strict !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/10/2007, 17h24
  2. Rech Fonction tri : String contenant lettre+chiffres[VB6]
    Par t'djinn dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/07/2006, 19h08
  3. Exécution d'une string contenant un caractère réservé
    Par thunderblade dans le forum Linux
    Réponses: 3
    Dernier message: 05/04/2006, 17h32
  4. [XSLT] Transformer un String contenant du xml
    Par VinceFromBcn dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 07/07/2004, 12h42
  5. [xsl java]Appliquer une XSL à un String contenant doc XML
    Par aldo047 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/04/2003, 15h46

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