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 :

Lire ce qui vient aprés X et avant Y sur fichier rtf


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Points : 74
    Points
    74
    Par défaut Lire ce qui vient aprés X et avant Y sur fichier rtf
    Salut ,
    Voila mon code , qui éclaircira la situation :
    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
     AssignFile(SomeTxtFile,ExtractFilePath(Application.ExeName)+'XXX.rtf') ;
      application.ProcessMessages;
      {$I-} //La vérification d'E/S est désactivée
      Reset(SomeTxtFile) ;
     
    {$I+} //La vérification d'E/S est activée
    if IoResult=0 then //Renvoie l'état de la dernière opération d'E/S
    begin
    while not EOF(SomeTxtFile) do
        begin
         ReadLn(SomeTxtFile, buffer) ;
          application.ProcessMessages;
    if AnsiContainsStr(buffer, '"synops">')  then
           begin
            StringFirst:=droite('"synops">',buffer);
            StringSecond :=gauche('</div>',Stringfirst);
          application.ProcessMessages;
          end
          end    ;
    et voila le fichier que je parcours :
    <div class="synops">
    Des étudiants basculent dans l'épouvante après avoir reçu un coup de fil leur annonçant une série de meurtres prévue pendant les vacances de Noël... </div>
    comme vous avez surement remarqué ici je parcours phrase par phrase , donc dans mon cas je n'arriverais pas a recuperer le texte de synops...
    Je cherche donc une facon de mettre dans une variable tout ce qu'il ya entre class="synops" et </div> , sachant qu'il ya plusieurs lignes entre les deux .
    j'espere avoir été clair , merci

  2. #2
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Simple proposition :
    Pourquoi ne pas faire un parcours ligne par ligne comme tu fais et à chaque fois tu regardes (avec Pos() ) si </div> se trouve dans ta ligne ... Ca donnerait un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    Chaine:='';
    While Not (Eof(F) or Trouve) do
     Begin
     Readln(F,schaine);
     Trouve:=pos('</div>',chaine)<>0;
     Chaine:=Chaine+' '+sChaine
     End;
    Chaine:=Copy(Chaine,1,Pos('</div>',Chaine)+1); //pas sur du +1
    ...
    Enfin un truc dans le genre je pense que ça peut marcher ...

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    salut
    merci de la réponse , mais j'y arrive toujours pas .
    Quelqu'un aurait une autre idée ?

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Ca doit être un code comme celui la que tu veux je suppose :
    Désolé pour la technique mais je l'ai fait rapido en un quart d'heure.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    procedure TForm1.Button5Click(Sender: TObject);
    var
      Fichier : TextFile;
      ChaineRecupere, Chaine, ChaineDebut, ChaineFin, NomFichier : string;
      StartRecupChaine : boolean;
      Position : integer;
    begin
      NomFichier := 'c:\temp\essai.txt';
      ChaineDebut := '<div class="synops">';
      ChaineFin := '</div>';
      AssignFile(Fichier, NomFichier);
      StartRecupChaine := False;
      if FileExists(NomFichier) then
      begin
        Reset(Fichier);
        try
          while not eof(Fichier) do
          begin
            readln(Fichier,Chaine);
            Position := Pos(ChaineDebut,Chaine);
     
            if Position > 0 then
            begin
              Chaine := Copy(Chaine,Position + Length(ChaineDebut), Length(Chaine));
              ChaineRecupere := Chaine;
              StartRecupChaine := True;
            end;
     
            if StartRecupChaine then
            begin
              Position := Pos(ChaineFin,Chaine);
              if Position > 0 then
              begin
                ChaineRecupere := ChaineRecupere + Copy(Chaine,1,Position -1);
                Break;
              end
              else
                ChaineRecupere := ChaineRecupere + Chaine;
            end;
          end;
        finally
          CloseFile(Fichier);
        end;
      end;
      Showmessage(ChaineRecupere);
    end;

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/02/2008, 18h47
  2. [VB.NET] Lier 1 report à 1 DataTable qui vient pas d'une BD
    Par borgfabr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/03/2005, 13h02
  3. Variable qui change après un DispatchMessage
    Par SekYo dans le forum Windows
    Réponses: 9
    Dernier message: 30/09/2004, 17h22
  4. Qui vient sur developpez.com ?
    Par chess dans le forum Evolutions du club
    Réponses: 29
    Dernier message: 11/09/2004, 14h31
  5. Récupérer l'id d'un élément qui vient d'être inséré
    Par sg-40 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2004, 11h30

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