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 :

LoadFrom un fichier texte dans Stream et rajouter une ligne texte au stream avant SaveTo


Sujet :

Langage Delphi

  1. #1
    Membre régulier

    Homme Profil pro
    Direction financière et formateur en gestion et contrôle de gestion
    Inscrit en
    Mai 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Direction financière et formateur en gestion et contrôle de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2003
    Messages : 185
    Points : 119
    Points
    119
    Par défaut LoadFrom un fichier texte dans Stream et rajouter une ligne texte au stream avant SaveTo
    Bonjour à tous,
    J'aurais tendance à dire "coucou ... c'est encore moi ..."

    Je sollicite encore une fois la communauté pour un truc qui est peut être bête mais dont je n'arrive pas à me sortir : les Stream.
    En préambule, je me suis mis en tête que travailler avec des Stream c'est bien plus rapide que n'importe quoi. Par contre, je bloque sur plein de points.
    Mon truc est simple : imaginez un fichier texte contenant ... du texte (par exemple une procédure Delphi)
    Je load mon fichier dans le Stream, au hasard et parce que j'ai lu que c'était celui qui utilisait la mémoire un TMemoryStream
    Celà donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Stream :=TMemoryStream.Create ;
        Stream.LoadFromFile(TextFile);
    Bon, ça c'est fait, maintenant ma question :
    Est il possible, et comment, de rajouter directement dans le flux une nouvelle ligne de texte à la fin ? Pour le moment je passe par un TStringList pour rajouter mais, cela fait une étape en plus dont on peut, peut être se passer ?
    ensuite, il suffirait de faire un SaveTo pour sauver le flux dans le fichier
    Delphi 10.4.1 - Lazarus
    Utilisation de la VCL

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    en fait tu ne comprends simplement pas ce que tu fais, qu'est ce qui te permet d'affirmer "je me suis mis en tête que travailler avec des Stream c'est bien plus rapide que n'importe quoi" ?

    à ton avis qu'est-ce que c'est qu'un TMemoryStream et que contient il après un LoadFromFile, en quoi consiste le fait d'ajouter une ligne à la fin ? A Quoi devrait ressemble le stream après cette opération ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre régulier

    Homme Profil pro
    Direction financière et formateur en gestion et contrôle de gestion
    Inscrit en
    Mai 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Direction financière et formateur en gestion et contrôle de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2003
    Messages : 185
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    en fait tu ne comprends simplement pas ce que tu fais, qu'est ce qui te permet d'affirmer "je me suis mis en tête que travailler avec des Stream c'est bien plus rapide que n'importe quoi" ?

    à ton avis qu'est-ce que c'est qu'un TMemoryStream et que contient il après un LoadFromFile, en quoi consiste le fait d'ajouter une ligne à la fin ? A Quoi devrait ressemble le stream après cette opération ?
    Hummm ... je m'imagine un flux avec l'ensemble de mes lignes dedans, comme dans un fichier texte mais en mémoire ...
    Les données sont contigues, donc j'imagine qu'il n'y a pas de #13#10
    Dans l'exemple que tu m'as donné semaine dernière, j'ai compris qu'il fallait donner "la donnée" et sa taille. ...

    Donc pour rajouter à la fin il faudrait peut être faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Stream.Seek(0, soFromend); //pour aller à la fin
    s := 'blablabla';
    i := Length(s);
    Stream.Write(i, SizeOf(i));
    if i > 0 then
          Stream.Write(s[1], i * SizeOf(Char));
    J'ai juste ?
    Delphi 10.4.1 - Lazarus
    Utilisation de la VCL

  4. #4
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Essaie TStringStream à la place de TMemoryStream et après utilises WriteString pour y ajouter du texte.

  5. #5
    Membre régulier

    Homme Profil pro
    Direction financière et formateur en gestion et contrôle de gestion
    Inscrit en
    Mai 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Direction financière et formateur en gestion et contrôle de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2003
    Messages : 185
    Points : 119
    Points
    119
    Par défaut
    Essaie TStringStream à la place de TMemoryStream et après utilises WriteString pour y ajouter du texte
    Waouh! ça a l'air tout simple ...

    Prem m'avait répondu d'utiliser TStringStream dans un post de la semaine dernière mais je n'y ai pas fait attention.
    Ca fonctionne très bien, et super facile à utiliser ...

    MERCIIIIIII
    Delphi 10.4.1 - Lazarus
    Utilisation de la VCL

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

Discussions similaires

  1. Rajouter une ligne de code dans un fichier php
    Par lolo81100 dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 01/11/2013, 11h36
  2. Réponses: 3
    Dernier message: 31/05/2008, 12h50
  3. Comment rajouter une ligne dans une base de données ?
    Par pttangediabolik dans le forum Débuter
    Réponses: 2
    Dernier message: 09/05/2008, 15h06
  4. Réponses: 2
    Dernier message: 06/06/2007, 16h27
  5. [PB 10.5] Rajouter une ligne dans une bdd
    Par cagoule dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 23/03/2007, 15h48

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