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 :

Structurer un fichier texte


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 572
    Par défaut Structurer un fichier texte
    Bonjour,

    j'ai un gros fichier texte constitué de blocs avec des titres.
    une structure hiérarchique en quelque sorte :

    TITRE0
    Sous-titre 0
    ligne0
    ligne1
    ligne2
    etc.
    Sous-titre 1
    ligne0
    ligne1
    ligne2
    ligne3
    etc.
    Sous-titre 2
    ligne0
    ligne1
    ligne2
    ligne3
    etc.
    TITRE1
    Sous-titre 0
    ligne0
    ligne1
    ligne2
    etc.
    etc..

    tout est variable, le nombre de titres, de sous-titres et de lignes.

    je souhaiterai reprendre ce fichier (ou simplement le lire) et placer le tout dans une structure permettant
    de lire un sous-titre avec ses lignes et selon les informations contenues y affecter une propriété booléenne (vrai ou faux)

    Ensuite, relire soit les blocs vrai, soir les blocs faux

    ça paraît simple à première vue, mais..
    j'ai testé pas mal de codes (array of array of TStringList) ou TRecord
    mais, ça ne colle pas vraiment..

    Donc, merci de me donner une piste de travail

    cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Qu'est ce qui permet de distinguer les sous-titres ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 115
    Par défaut
    Salut Cantador
    Ton truc me plait bien, laisse mais regarder, j'ai un peu de temps ce soir,
    Ah une question sur ta structure:
    Ta structure est-elle toujours avec 3 niveaux (Titre, Sous-titre, Ligne)
    ou bien ca peut-être avec plus de niveaux, du genre

    TITRE0
    Ligne 1
    Ligne ...
    S-titre 1
    Ligne 1
    Ligne 2
    Ligne ...
    S-Titre 2
    S-S-Titre 1
    Ligne 1
    Ligne ...
    S-S-Titre 2
    S-S-S-Titre 1
    Ligne ...
    3 niveaux ou n niveaux ?
    a toute

    solilog

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    est-il possible de transformer en XML ce serait plus simple en tout cas cela répondrai à tous tes objectifs
    je ne suis pas très doué (même pas du tout, en général je les lis ou les génère) en XML mais la structure devrait à peu près avoir la structure suivante

    <?xml version="1.0" encoding="UTF-8"?>
    <Fichier nom="Fichier.txt">
    <Titre intitulé="TITRE0">
    <Section nom="Section 0 " visible="Oui" >
    <Lignes>
    <ligne>ligne0</ligne>
    <ligne>ligne1</ligne>
    <ligne >ligne2</ligne>
    <ligne>ligne3</ligne>
    <ligne >ligne4</ligne>
    </Lignes>
    </Section>
    <Section nom="Section 1 " visible="Non" >
    <Lignes>
    <ligne>ligne0</ligne>
    <ligne>ligne1</ligne>
    </Lignes>
    </Section>
    ..
    </Titre>
    </Fichier>
    Note : j'ai utilisé cet utilitaire xml-copy-editor, pas sur que <Lignes> soit nécessaire

    sinon, même question que Selzig qu'est-ce qui permet de distinguer les "rubriques" , des espaces ou autres caractères devant que tu nous aurais caché?
    le fait que le premier niveau est tout en MAJ, le second avec une MAJ au début et les autres en minuscule serait-il un critère de choix ?

  5. #5
    Membre éclairé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 572
    Par défaut suite..
    Bonjour,

    merci à tous !

    j'ai oublié de vous préciser un point :
    chaque sous-titre comporte en début de ligne un texte qui varie selon trois formules possibles.
    En clair, on est donc en mesure de trouver le début de chaque bloc et sa fin (avec un compteur)
    il reste à pouvoir stocker l'ensemble des blocs sous l'étiquette de son TITRE.
    bref, faire un structure à TROIS niveaux. (TITRE / SOUS-TITRE / BLOC DE LIGNES)
    chaque titre peut avoir plusieurs sous-titres, et chaque sous-titre peut comporter n lignes.
    Il n'y a pas de sous sous-titres (ouf..)
    je pourrais bien sûr faire des tables avec des relations, mais cela me semble lourd pour une utilisation hebdomadaire.
    j'aimerai plutôt construire un algo, qui range le tout dans des tableaux ou des StringList et ensuite pouvoir aller lire ce que je veux.

    merci pour vos suggestions

    cordialement

  6. #6
    Membre Expert

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Par défaut
    Bonjour Cantador.

    Apparemment, tu peux distinguer un titre d'un sous-titre...
    Je te suggère l'utilisation d'un seul TStringList, une ligne par sous-titre, en utilisant un séparateur (Alt 124 par exemple).
    Chaque ligne aurait donc la structure suivante :

    Titre0|Sous-titre0|true|ligne1|ligne2|ligne3|...
    Titre0|Sous-titre1|false|ligne1|ligne2|ligne3|...
    Titre0|Sous-titre2|true|ligne1|ligne2|ligne3|...
    Titre1|Sous-titre0|true|ligne1|ligne2|ligne3|...
    ...

    Il te suffit alors d'écrire une fonction de recherche d'un "champ", par exemple avec les fonctions Pos et PosEx du séparateur. (Champ 0 = titre, Champ1 = sous-titre...)
    Pour la recherche :
    - trouver la première ligne du StringList dont le champ 0 contient le titre souhaité.
    - lire toutes les lignes du StringList concernant ce titre jusqu'à trouver la ligne contenant le bon sous-titre.
    - lire et/ou modifier le champ boolean
    - lire le reste de la ligne du StringList (ligne1, ligne2...)

    Tu parles d'un gros fichier texte. Voir si cela reste dans les limites d'un StringList qui, si ma mémoire est bonne, correspond à la taille maximale d'une variable string.
    Sinon, utiliser un TList avec chaque item pointant sur une variable string.

    Cordialement
    Thierry

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut
    Il nous faudrait un extrait réel de ton fichier pour nous aider à t'aider.
    Et quitte à utiliser un fichier texte, je passerais plutôt par le format JSON.

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

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut Une idée
    Avec un TMemo et un TTreeView

    Nom : i1.png
Affichages : 412
Taille : 8,0 Ko

    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
    20
    21
    22
    23
    24
    25
    26
    27
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms1 : TMemoryStream ;
    begin
      ms1 := TMemoryStream.Create ;
      TreeView1.SaveToStream(ms1);
      ms1.Position := 0 ;
      Memo1.Lines.LoadFromStream(ms1);
      ms1.Free ;
      Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,#9,'#',[rfReplaceAll]) ;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
      ms1 : TMemoryStream ;
      sl1 : TSTringList ;
    begin
      sl1 := TStringList.create ;
      sl1.Text := StringReplace(Memo1.Lines.Text,'#',#9,[rfReplaceAll]) ;
      ms1 := TMemoryStream.Create ;
      sl1.SaveToStream(ms1);
      ms1.Position := 0 ;
      TreeView1. LoadFromStream (ms1);
      ms1.Free ;
      sl1.free ;
      TreeView1.FullExpand;
    end;

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

Discussions similaires

  1. [PHP 5.3] Structurer un fichier text
    Par vainuiz dans le forum Langage
    Réponses: 6
    Dernier message: 04/04/2012, 21h12
  2. structuration de fichier texte
    Par haifas dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/06/2011, 11h19
  3. [MySQL] créer un fichier texte selon une structure
    Par pascale86 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/12/2007, 14h44
  4. lecture fichier texte pointeur et structure
    Par shermav dans le forum C
    Réponses: 8
    Dernier message: 13/04/2007, 23h44
  5. Structure fichier texte..
    Par petitcoucou31 dans le forum Langage
    Réponses: 12
    Dernier message: 25/04/2006, 22h47

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