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

Delphi Discussion :

TComPort gestion du CRLF et import dans un memo


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut TComPort gestion du CRLF et import dans un memo
    Bonjour à tous,
    J'essaie de capturer des messages type json via un port USB (COM3)

    La première ligne du fichier contient une accolade ouvrante, puis un CRLF
    puis des lignes du genre: "Unix_TS":1572817717,CRLF
    ...
    Et enfin la dernière ligne est :
    }
    (fin du json)

    Via CoolTerm, pas de problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {
    "Unix_TS":1572817717,
    "GW_ID":GW_A,
    "Ctr_ID":CTR_01,
    "Probe_ID":28FFD1A9921604A1
    }
    Via TComPort, à chaque ligne , je n'ai pas de retour chariot (mais bien un saut de ligne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {
     "Unix_TS":1572817717,
                          "GW_ID":GW_A,
                                       "Ctr_ID":CTR_01,
                                                       "Probe_ID":28FFD1A9921604A1
                                                                                  }
    (alors que quand j'ouvre le fichier avec notepad++ ces lignes se terminent bien par des CRLF


    Question auxiliaire, je n'arrive pas à importer ces lignes dans un mémo???

    Merci pour votre aide

  2. #2
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 084
    Points : 5 605
    Points
    5 605
    Par défaut
    Citation Envoyé par PhilLU Voir le message
    Bonjour à tous,

    Via CoolTerm, pas de problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {
    "Unix_TS":1572817717,
    "GW_ID":GW_A,
    "Ctr_ID":CTR_01,
    "Probe_ID":28FFD1A9921604A1
    }
    Via TComPort, à chaque ligne , je n'ai pas de retour chariot (mais bien un saut de ligne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {
     "Unix_TS":1572817717,
                          "GW_ID":GW_A,
                                       "Ctr_ID":CTR_01,
                                                       "Probe_ID":28FFD1A9921604A1
                                                                                  }
    C'est un comportement normal si ça vient d'un serveur sous Unix ou Linux, ou d'un objet fonctionnant avec Linux comme base d'OS
    Sous UNIX le saut de ligne c'est juste LF (sans CR)
    Il suffit lorsque ta réception est terminée de remplacer les LF par des CRLF dans la chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ChaineRecue=StringReplace(ChaineRecue,#10,#13+#10,[rfReplaceAll]);
    Pour les importer dans un TMemo après remplacement du LF par CRLF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Memo1.Lines.Text:=ChaineRecue;
    Note bien que dans le format JSON, les séparateurs de ligne (CR, LF ou CRLF) ne sont pas obligatoires, il ne servent qu'a rendre le contenu plus facilement lisible, mais il ne servent à rien d'autre
    En conséquence la chaîne JSON que tu reçoit est parfaitement correcte (même elle semble mal formaté)
    Tu pourrais aussi supprimer tous les LF et les espaces et tout mettre sur une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"Unix_TS":1572817717,"GW_ID":GW_A,"Ctr_ID":CTR_01,"Probe_ID":28FFD1A9921604A1}
    Ce serai OK aussi

    J'ai noté aussi qu'il manque des " sur les valeur chaines dans ton JSON c'est normal ou c'est un oubli ?

    {"Unix_TS":1572817717,"GW_ID":"GW_A","Ctr_ID":"CTR_01","Probe_ID":"28FFD1A9921604A1"}

  3. #3
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut
    Merci Sergio,
    En Fait d'utiliser
    ChaineRecue=StringReplace(ChaineRecue,#10,#13+#10,[rfReplaceAll]);
    je reçois une chaine contenant des #$D#$A
    j'utilise donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    req := StringReplace(Str,#$A,#$D+#$A,[rfReplaceAll]);
    req := StringReplace(req,#$D#$D#$A,#$D#$A,[rfReplaceAll]);
    Memo3.Lines.Add(req);
    merci pour ton aide

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

Discussions similaires

  1. Erreur gestion excel via code VBA dans access pour importation
    Par blacklolou dans le forum VBA Access
    Réponses: 4
    Dernier message: 11/01/2013, 10h24
  2. gestion des chaines de caractères dans champ memo
    Par pascalourox dans le forum IHM
    Réponses: 1
    Dernier message: 07/08/2008, 20h32
  3. [Débutant] import dans Eclipse
    Par bonnefr dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/05/2004, 10h32
  4. [Strategie][Java][XML] Import dans une base de données
    Par nad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/09/2002, 11h12

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