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 :

Contrôler le retour à la ligne


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    J'aime la programmation avec Delphi
    Inscrit en
    Avril 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : J'aime la programmation avec Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 227
    Points : 132
    Points
    132
    Par défaut Contrôler le retour à la ligne
    Bonjour ,

    Je veux forcer une chaine de caractère de coller tous les enregistrements dans une ligne jusqu'à la fin du dernière colonne
    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
    19
     
        List := TStringList.Create; 
           try     ZQuery1.First;
            while not ZQuery1.Eof do
               begin
                S := '';
              for I := 0 to ZQuery1.FieldCount - 1 do
              begin
                  if S > '' then
                       S := S + '^';
                   S := S + ZQuery1.Fields[I].AsString; 
                 end;
                List.Add(S);
                ZQuery1.Next;
                end;
                finally
                List.SaveToFile('C:\fichierFinal.csv');
                List.Free;
                end;
    puisque j’ai sur certains enregistrements un retour à la ligne et ça me donne des fausse informations

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 874
    Points : 11 363
    Points
    11 363
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
              begin
                  if S > '' then
                       S := S + '^';
                   S := S + ZQuery1.Fields[I].AsString; 
                 end;
    // il faut utiliser la fonction suivante pour remplacer les sauts de ligne par un espace (par exemple)
    // function StringReplace(const S, OldPattern, NewPattern: string;  Flags: TReplaceFlags): string;
     
      S := StringReplace(S, sLineBreak, ' ', [rfReplaceAll]);
     
                List.Add(S);

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Même méthode que tourlourou, mais au lieu d'espace, je remplaçais par '¶' ou par '\r' pour retrouver cette information lors de la lecture du fichier

    Tout dépend qui devra relire ton fichier !

    A savoir que dans un CSV, si un retour charriot est situé dans un texte entre " ", il ne devrait pas être interprété comme une fin de ligne mais bien comme un élement de la colonne en cours
    Excel ou MySQL implémente cela parfaitement mais je n'ai jamais eu le courage de coder cela !

    Sinon ^ c'est plutôt dans du HPRIM que du CSV

    ADO permet aussi de manipuler des Fichiers CSV
    BDE et son TTable permet de générer du CSV mais le format américain avec virgule ',' et non point-virgule ';' typique en france !

  4. #4
    Membre habitué
    Homme Profil pro
    J'aime la programmation avec Delphi
    Inscrit en
    Avril 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : J'aime la programmation avec Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 227
    Points : 132
    Points
    132
    Par défaut
    Merci pour vos réponses ,mais j’ai le même souci c’est un problème que je ne le pas compris, tous les enregistrements sont dans les mêmes lignes sauf certains comme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    20120609 09:53:57^18^Call Transferred^19993157^58721191^INTERCALL_ID: 20059564
    DNIS:^AGT:N/A, TYPE: OTHER^HANDLING_TIME: 41
    CLID:^AGT: 58721191, TYPE: NETWORK IN^09:53:57^10001^OTAORAN^0^10^20120609 09:50:47
    20120609 09:53:57^18^Call Transferred^19993157^58721191^INTERCALL_ID: 20059564
     DEST:^AGT:N/A, TYPE: OTHER^EVT LOG TYPE: CONTINUATION^AGT: 58721191, TYPE: NETWORK IN^09:53:57^10001^OTAORAN^0^11^20120609 09:50:47
    Et j’arrive pas de les redresser dans les mêmes lignes comme ci-dessous :

    20120609 09:53:57^18^Call Transferred ……………………… ^OTAORAN^0^10^20120609 09:50:47
    20120609 09:53:57^18^Call Transferred………………………..^OTAORAN^0^11^20120609 09:50:47

    Avec sLineBreak ne détecte pas le End de mes lignes je pense que sont des String et n'ont pas des lignes

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 755
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 755
    Points : 13 349
    Points
    13 349
    Par défaut
    Remplace sLineBreak par #13 ou #10.

  6. #6
    Membre habitué
    Homme Profil pro
    J'aime la programmation avec Delphi
    Inscrit en
    Avril 2011
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : J'aime la programmation avec Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 227
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Remplace sLineBreak par #13 ou #10.
    Merci Andnotor ça marche avec #10.

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

Discussions similaires

  1. Caractère de retour à la ligne.
    Par Pari dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2009, 09h59
  2. [FileWriter] retour à la ligne
    Par LoLoSS dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 23/06/2004, 10h52
  3. [JTextArea] Fichier et retour à la ligne
    Par eraim dans le forum Composants
    Réponses: 4
    Dernier message: 23/06/2004, 08h21
  4. [MFC] Retour à la ligne dans un CEdit
    Par Kant dans le forum MFC
    Réponses: 7
    Dernier message: 18/02/2004, 08h58
  5. Conserver les retours à la ligne
    Par arwen dans le forum ASP
    Réponses: 2
    Dernier message: 04/12/2003, 12h50

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