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 :

Tabulation dans un TMemo : caractère comme un autre?


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Tabulation dans un TMemo : caractère comme un autre?
    Bonjour,

    Sous Delphi6 :
    Je souhaite récupérer des sous-chaines de caractères dans une chaine de caractères (plus exactement des chaines d'un TMemo), en repérant des positions de caractères autres que numériques, comme la tabulation.

    ex :
    Listechaine[0] := '-100 {tab} -200 {tab} 2356 {tab} MHz '...
    Je cherche à récupérer les données numériques et les chaines de caractères.

    Pos(#9,Listechaine[0]) ne fonctionne pas, et je ne vois pas comment détecter la présence de la tabulation. La recherche des espaces n'est pas valable non plus.

    J'ai essayé avec char(9), char(265), mais ça ne donne rien...

    Comment rechercher la position des tabulations, dans Pos(), copy(), etc... ?

    Merci d'avance.

    Laurent

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut

    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pos(Chr(vk_Tab), Listechaine[0]);

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Ah, j'avais pas essayé ça... mais ça ne marche pas non plus...

    Merci quand même !

    Laurent

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Je souhaite récupérer des sous-chaines de caractères dans une chaine de caractères (plus exactement des chaines d'un TMemo),
    Je cherche à récupérer les données numériques et les chaines de caractères.
    Tiens essayes cela:
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        ListBox1: TListBox;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.DFM}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sLine: String;
      SL: TStrings;
      i,deb: Integer;
    begin
      ListBox1.Items.Clear;
      SLine := Memo1.Lines[0];
      SLine := StringReplace(SLine,' ',#13#10,[rfReplaceAll]); 
    SL :=TStringList.Create;
    
      i := 1;
      deb :=1;
      SLine := Trim(SLine);
      
      while (i < length(SLine)) do
      begin
        if (SLine[i] = #13) then
        begin
          SL.Add(Copy(SLine, deb, i-deb));
          while ( (SLine[i] = #13) or (SLine[i] = #10) ) do
            Inc(i);
            deb := i;
        end;
        inc(i);
      end;
      if deb <> i then
      begin
        SL.Add(Copy(SLine, deb, Length(SLine)));
      end;
    
      for i := 0 to SL.Count-1 do
      ListBox1.Items.Add(SL[i]);
      SL.Free;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.Lines.Add('   1 2 3 libelle1 4 5 6 libelle2     7 8 9    libelle3 ');
    end;
    
    end.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    En fait, je viens de contourner mon problème en m'inspirant d'un source de la FAQ :"comment extraire les mots d'une chaîne?"

    http://delphi.developpez.com/faq/?pa...chaine#explode

    (mais au lieu de détecter les caractères non désirés, je cherche les caractères désirés (lettres, nombres, signes + et - )).

    Je vais quand même essayer ton code pour voir si c'est plus efficace.

    Merci pour votre aide,

    Laurent

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

Discussions similaires

  1. [MySQL] Données SQL dans un tableau pas comme les autres
    Par Jeoffrey54 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/06/2008, 11h32
  2. Réponses: 8
    Dernier message: 15/07/2006, 18h59
  3. caractère tabulation dans un select
    Par jeanvincent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 22/06/2006, 08h35
  4. Réponses: 2
    Dernier message: 11/05/2005, 11h11
  5. Taille des tabulations dans un TMemo ?
    Par dergen dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/01/2003, 19h38

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