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 :

Effectuer un retour à la ligne avec un TStream


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 157
    Points : 67
    Points
    67
    Par défaut Effectuer un retour à la ligne avec un TStream
    Bonjour,

    Je veux éditer un fichier CSV avec un programme sous Delphi. J'utilise un TSream pour écrire dans ce fichier.
    Je voudrais pouvoir effectuer un retour à la ligne. J'ai essayé plusieurs solution en insérant les chaines '#13#10" ou bien '\n' mais sans résultat la chaine est copiée dans le fichier CSV au lieu d'effectuer un retour à la ligne.

    Voici la partie de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Stream := TFileStream.Create(_csvFile,fmCreate);
      Stream.Write(line1[1], Length(line1));
      Stream.Write('#13#10', Length('#13#10')*sizeof(char));
      Stream.Write(line2[1], Length(line2));
    Auriez vous s'il vous plait s'il vous plait un solution à ce problème

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    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 455
    Points : 24 867
    Points
    24 867
    Par défaut
    je le fais souvent mais en ANSI (Windows-1252) utilise la constante sLineBreak

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //------------------------------------------------------------------------------
    function Txxx.ExportResult(AResultStream: TStream): Boolean;
    var
      lCSVLine: TStringDynArray;
      lCSVLineText: AnsiString;
      ResultCount: Integer;
    begin
      ...
          lCSVLineText := TAnsiStringThomHelper.ImplodeLazy(lCSVLine, CSVSeparator) + AnsiString(CSVSeparator + sLineBreak);
          AResultStream.WriteBuffer(lCSVLineText[1], Length(lCSVLineText) * SizeOf(AnsiChar));
     
    ...
    end;

    Sinon tu confonds la chaine '#13#10' et la suite de caratère #13#10 !
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    il y a aussi Writeline http://docwiki.embarcadero.com/Libra...iter.WriteLine mais sans indication de version de Delphi ...
    je ne sais d'ailleurs pas quand Writeline est apparu
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Stream := TFileStream.Create(_csvFile,fmCreate);
      Stream.Write(line1[1], Length(line1));
      Stream.Write('#13#10', Length('#13#10')*sizeof(char));
      Stream.Write(line2[1], Length(line2));
    remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      sl1 : TStringlist ;
    begin
      sl1 := TStringlist.Create ;
      sl1.Add (line1[1]);
      sl1.Add (line2[1]);
      sl1.SaveToFile(_csvFile);
      sl1.Free ;

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    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 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Le TStreamWriter n'existait pas en BCB2007 mais en BCB XE c'est sûr qu'il était disponible (je pense depuis 2009 mais non documenté)
    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. Retour à la ligne avec fichier à accès aléatoire
    Par mehdiyou dans le forum VB.NET
    Réponses: 11
    Dernier message: 29/04/2008, 14h57
  2. retour à la ligne avec une zone de texte
    Par samia21 dans le forum IHM
    Réponses: 10
    Dernier message: 28/04/2008, 16h28
  3. Effectuer un retour à la ligne
    Par prophen dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2008, 21h40
  4. Retour à la ligne avec Form
    Par ClaudeP dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/05/2007, 08h42
  5. Problème retour à la ligne avec textarea
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/05/2006, 18h59

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