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 :

Tester la présence d'un titre dans un fichier TextFile


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut Tester la présence d'un titre dans un fichier TextFile
    J'ai une routine pour enregistrer le contenu d'un TStringGrid dans un fichier et auquel j'ai rajouté un titre au document.

    Lorsque j'ouvre le document avec un OpenDialog, j'aimerais pouvoir tester si un titre existe ou non au début du fichier etauquel cas le demander (via un inputbox). Comment faire ce test ?

    Voci les 2 codes correspondants :

    Le code pour enregistrer le fichier :

    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
     
    procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
    var f:    TextFile;
        i, k: Integer;
    begin
      AssignFile(f, FileName);
      Rewrite(f);
      with StringGrid do
      begin
        Writeln(f, 'Mon Titre'); //Insérer un titre
        Writeln(f, ColCount);   //Ecrire le nb de colonnes
        Writeln(f, RowCount);   //Ecrire le nb de lignes
        // Boucler sur les cellules
        for i := 0 to ColCount - 1 do    //ou i et k :=0 ou 1
          for k := 0 to RowCount - 1 do
            Writeln(F, Cells[i, k]);
      end;
      CloseFile(F);
    end;
    Le code pour lire le fichier :

    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
     
      AssignFile(f, FileName);
      Reset(f);
      with StringGrid do
      begin
        // Récuperer le titre du document:
        Readln(f, xTmp);
        DocTitle := xTmp;
          //ShowMessage (DocTitle);
        // Obtenir le nombre de colonnes:
        Readln(f, iTmp);
        ColCount := iTmp;
        // et de lignes
        Readln(f, iTmp);
        RowCount := iTmp;
        // remplir les cellules:
        for i := 0 to ColCount - 1 do     //ou i et k := 0 ou 1
          for k := 0 to RowCount - 1 do
          begin
            Readln(f, strTemp);
            Cells[i, k] := strTemp;
          end;
      end;
      CloseFile(f);
    Grand merci pour votre aide,

    Denis

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 550
    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 550
    Points : 25 120
    Points
    25 120
    Par défaut
    Impossible dans un fichier texte pur, ce n'est que du texte, il faudrait soit faire une balise genre TITLE="" au début du fichier, ... ou mettre un caractère spécial pour indiquer le titre, bien sur, si ton fichier est modifié par un autre programme tu peux perdre tes marquages ...
    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 émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    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 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    En complément : Tu peux utiliser les TIniFiles

  4. #4
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    J'ai appris que c'est rarement impossible en programmation...

    Le titre étant une chaine, les valeurs suivantes étant numériques, ne peut-on pas tester la première donnée ? si je lit un string ou integer et auquel cas je peut déterminer qu'il y a un titre ou non.

    Qu'en pensez vous ?

    Denis

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    une idée:
    A l'enregistrement, mettre un identifiant avant le titre (caractères peu utilisés),
    à la lecture, lire la première ligne et rechercher l'identifiant.
    si l'identifiant est trouvé (à la place prévue) alors titre = chaine - identifiant...

    à+

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 550
    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 550
    Points : 25 120
    Points
    25 120
    Par défaut
    C'est l'idée que j'ai émise avec un caractère spécial, mais l'ouverture par certains editeurs de texte peuvent supprimer des caractères ...

    sinon ddubois, lorsque je dis que c'est impossible, je parle si on se limite à un fichier texte "pur", dès que l'on ajoute des balises, des caractrès binaires, ... ce n'est plus un fichier texte pur mais un déjà un fichier texte formaté (le RTF c'est un fichier texte formaté, à la différence d'un fichier word qui est un fichier binaire structuré), c'est juste dans la nuance que ce situe l'impossibilité ... évidemment ce n'est que de la terminologie, cela n'a rien d'impératif, ...
    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

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 865
    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 865
    Points : 11 334
    Points
    11 334
    Billets dans le blog
    6
    Par défaut
    tu peux aussi éventuellement avoir une extension qui renseignera sur le format : txt = normal ; ttt = ton format txt avec un titre en 1° ligne
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Je retiens l'idée du caractère de contrôle au début du titre.
    A priori, il n'y a pas de raison que ce fichier soit édité par un autre éditeur que mon programme...

    Merci,

    Denis

  9. #9
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    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 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    C'est une solution. Par contre si tu penses aux programmeurs qui viendront après toi pour retoucher ton programme tu peux peut être leur faciliter la vie en employant des structures connues. En ce qui concerne le fichier de type ini en voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [MONTITRE]
    NbCol=2
    NbLIN=3
    A1=32
    B1=65
    A2=45
    B2=89
    A3=54
    B3=54

  10. #10
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    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 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    En reprenant l'exemple précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [MonTableau]
    Titre=Un titre
    NbCol=3
    NbLin=2
    A1=32
    B1=65
    A2=45
    B2=89
    A3=54
    B3=54
    Voici un programme :
    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
    uses IniFiles ;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      st1 : string;
      IniFile1 : TIniFile;
      sl1 : TStringList;
      i1 :integer ;
    begin
      IniFile1 := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'MonFichier.ini');
      st1 := IniFile1.ReadString('MonTableau', 'Titre', '');
      st1 := IniFile1.ReadString('MonTableau', 'NbCol', '');
      st1 := IniFile1.ReadString('MonTableau', 'NbLin', '');
      sl1 := TStringList.Create;
      IniFile1.ReadSection('MonTableau', sl1);
      for i1 := 3 to sl1.Count-1 do
        st1 := IniFile1.ReadString('MonTableau', sl1[i1], '');
      IniFile1.Free;
    end;

Discussions similaires

  1. Tester la présence d'un attribut dans une BD
    Par michouhayoo dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 26/04/2008, 15h57
  2. Tester la présence d'un enregistrement dans une table ?
    Par Evocatii dans le forum Requêtes
    Réponses: 5
    Dernier message: 25/02/2008, 21h02
  3. Tester la présence d'une image dans un fichier WORD
    Par porikito dans le forum Débuter
    Réponses: 1
    Dernier message: 05/12/2007, 16h12
  4. Tester la présence d'un caractère dans une chaine
    Par sebinator dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/11/2007, 14h23
  5. [XSLT] Tester la non présence d'une valeur dans un fichier
    Par arnauann dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/01/2007, 15h29

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