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 :

Charger fichier txt ou htm


Sujet :

Delphi

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut Charger fichier txt ou htm
    J'ai une petite routine que me permet de charge dans une variable de type string le contenu d'un document txt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    AssignFile(FTxt, 'Chemin_du_document');
    Reset(FTxt);
    while not Eof(FTxt) do
    begin
      Read(FTxt, ch);
      Chaine := Chaine + ch;
    end;
    Cela fonctionne bien jusque là.
    Le problème est que lorsque mon document est de type htm, je ne voudrai récupérer que le texte en lui même alors que la je récupère tout son code source.
    Le but est de mettre mon texte dans un zone Memo pour que l'on puisse ensuite le modifier et mettre à jour les sources.
    Avez-vous une piste...

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Pour lire un fichier texte, le charger en mémoire et l'afficher, il y a nettement plus simple, plus rapide, moins gourmand en réallocation mémoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1.Lines.LoadFromFile('Chemin_du_document');
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1.Lines.SaveToFile('Chemin_du_document');
    L'utilisation de AssignFile, Read, ... est plus adapté à une lecture pour traitement, l'opération suivante est affreusement couteuse en tempsSinon, un HTM, c'est un format plus évolé, tu perdras la mise en page avec un Memo, affiche le dans un TWebBrowser, voir Afficher page HTML dans Delphi
    Pour la modification, un outil plus évolué sera requis ...
    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 chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Peut-être une autre piste plus simple et moins académique :
    Celle d'afficher la page (si fichier .htm etc.) dans un butineur et d'ensuite faire un "tout sélectionner" afin de récupérer le texte sans passer par le source.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut
    Mon problème est que l'on me demande de partir de deux modèles, l'un txt et l'autre htm.
    Ces modèles doivent être chargé dans une zone (actuellement une zone mémo) afin de l'utilisateur puisse y apporter des modifications si il le souhaite.
    Mon pb est que dans le cas d'une page htm que j'affiche dans un browser, j'ai la bonne apparence mais cela n'est pas modifiable (à priori).
    Si par contre j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoMail.Lines.LoadFromFile(chemin);
    j'ai mon code source qui apparait dans MemoMail et c'est incompréhensible
    et si j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoMail.Text := WebBrowser1.OleObject.Document.Body.InnerText;
    j'ai le texte de mon document htm mais sans la gestion des polices (gras, italique, type de police,...)
    Dans ce cas, la question que je me pose c'est comment faire si ensuite je modifie ce texte pour le remettre proprement dans mon modèle htm.
    Si j'utilise
    WebBrowser1.OleObject.Document.Body.InnerText:=MemoMail.Text ;
    après avoir fait mes modifications, j'ai bien dans mon WebBrowser mes modifications mais j'ai perdu la gestion des polices ainsi que tout ce qui n'était pas du texte.
    Là je sèche complètement...

  5. #5
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Si j'ai bien compris :
    Ton cahier des charge stipule que tu charges (si cas html) un fichier HTML en texte brut (ou source), mais que la gestion du formatage de texte soit possible ?



    C'est pour un devoir de cours ou bien est-ce une demande de ton patron ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut
    C'est une demande de mon patron.
    j'ai avancé en faisant un petite triche.
    Je récupère le body de mon document au moyen de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strCodeSourceHtm := WebBrowser1.OleObject.Document.Body.InnerHTML;
    Dans mon document htm j'ai mis une mot clé réservé à savoir /*MESSAGE*/ et je fais un stringreplace de ma variable strCodeSourceHtm.
    Mon pb maintenant est de réinjecté dans mon document source mon body ainsi modifié car j'ai d'autres élément dans mon modèle auquel je ne veux pas toucher.
    Je ne trouve pas actuellement de commande me permettant de remplacer d'un coup le contenu du body de mon document.

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Pas facile à suivre ton histoire

    Mais si j'ai bien compris, question récup Body, je verrais un truc comme :

    1. Ouvrir une StringList
    2. Charger le fichier complet HTML dedans lorsque...
    3. Détection body ouvrant
    4. Top départ pour copier tout le contenu jusque...
    5. Détecter le Body fermant
    6. Stop action copy
    7. Sélectionner cette partie de texte
    8. Couper cette partie
    9. Injection de ton body traité

    Enfin c'est très mal expliqué ; mais en gros il s'agit du principe de la sélection d'un bloc de texte et sur ce bloc sélectionné ; un simple "Coller" effectue le remplacement d'un seul coup.

    Enfin, c'est l'algo que je verrais, mais je n'ai certainement pas trop bien saisi.

    @+

    Edit : En effet, à te relire, puisque tu as réussi la récup de ton body, j'ai mal pigé. Mais la méthode du "tout sélectionner" reste valable, je pense.

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

Discussions similaires

  1. [WD14] charger fichier txt dans table
    Par KANACHE dans le forum WinDev
    Réponses: 15
    Dernier message: 17/05/2011, 11h37
  2. [WD14] Charger fichier TXT
    Par cooltechfr dans le forum WinDev
    Réponses: 7
    Dernier message: 05/04/2011, 10h09
  3. Comment charger un fichier txt du web dans un memo Delphi - Pascal
    Par michaelminelli1 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/11/2008, 17h30
  4. charger les données d'un fichier .txt dans une table
    Par lemerite dans le forum Développement
    Réponses: 6
    Dernier message: 10/09/2008, 18h33
  5. Charger Un Fichier Txt En Memoire
    Par chakcc dans le forum C
    Réponses: 11
    Dernier message: 13/11/2006, 10h54

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