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 :

Comment récupérer uniquement les chiffres dans une ligne de texte ?


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut Comment récupérer uniquement les chiffres dans une ligne de texte ?
    salut,
    veuillez me donner un coup de main:

    je souhaiterais parcourir toutes les lignes d'un memo tout récuperant tout entier rencontré dans la chaine.

    merci

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    VAR s:string;
       i:integer;
       n:string;
    begin
          s:=memo.text;
          n:='';
          for i:=1 to length(s) do
            if s[i] in ['0'..'9'] then n:=n+s[i];
    end;

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Je propose une version qui permet de rechercher plusieurs nombres dans une chaine de caractères. La méthode est peut être pas optimale mais néanmoins ça fonctionne. Voici le code :

    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
    var
      Form1: TForm1;
      // Tableau dynamique d'entiers
      Tab : array of integer;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.TrouverNombreClick(Sender: TObject);
    var
    i,j:integer;
    Nbre:string;
    MonTexte:String;
    begin
      j:=0;
      SetLength(Tab,j);
      Nbre:='';
      MonTexte:=Memo1.Text;
      for i:=1 to Length(MonTexte) do
      begin
        if MonTexte[i] in ['0'..'9'] then
          Nbre:=Nbre+MonTexte[i]
        else
        begin
          if Nbre<>'' then
          begin
            SetLength(Tab,j+1);
            Tab[j]:=StrToInt(Nbre);
            j:=j+1;
            Nbre:='';
          end;
        end;
      end;
    end;
     
    procedure TForm1.AfficherNombreClick(Sender: TObject);
    var
    i:integer;
    begin
      for i:=Low(Tab) to High(Tab) do
      ShowMessage(IntToStr(Tab[i]));
    end;
     
    end.
    J'espère que celà te conviendra

  4. #4
    Membre confirmé Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut Re:Comment récuperer uniquement les numériques dans une ligne de texte ?
    salut
    merci vraiment car là j'ai avancé un tout petit peu.

    en fait j'ai du texte dans un mémon et je souhaiterais récupérer dans chaque ligne chaque numérique qui sera écrit dans un fichier texte.Chaque numérique écrit dans le fichier sera séparé par un caractère spéciale(; ou #).
    je veux donc faire cela en parcourant tout le mémo.

    voila le code que j'ai écrit:
    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
     
     for k := 0 to memo1.lines.count do
          begin
          txt:=Memo1.lines[k];
           j:=0;
           SetLength(Tab,j);
           Nbre:='';
     
           for i:=1 to Length(txt) do
              begin
                if txt[i] in ['0'..'9'] then
                begin
                Nbre:=Nbre+txt[i];
                write(F,trim(Nbre)+';');
                end
                else
                begin
                   if Nbre<>'' then
                   begin
                     SetLength(Tab,j+1);
                     Tab[j]:=StrToInt(Nbre);
                     j:=j+1;
                     Nbre:='';
                   end;
               end;
            end;
    l'écriture ne donne pas le résultat voulu dans mon fichier texte:

    1;1;12;4;45;454;7;74;9;


    au lieu de 1;12;454;74;9;


    merci de me donner un coup de main

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    normal;
    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
           for i:=1 to Length(txt) do
              begin
                if txt[i] in ['0'..'9'] then
                begin
                Nbre:=Nbre+txt[i];
                end
                else
                begin
                   if Nbre<>'' then
                   begin
                     SetLength(Tab,j+1);
                     Tab[j]:=StrToInt(Nbre);
                     j:=j+1;
                    write(F,trim(Nbre)+';');                 Nbre:='';
                   end;
               end;

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Bonjour,

    J'apporte une petite modification de mon code. Le soucis est que si un nombre était trouvé en fin de chaine, on ne le prenait pas en compte.

    Voici le code modifié :

    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
    procedure TForm1.TrouverNombreClick(Sender: TObject);
    var
    i,j:integer;
    Nbre:string;
    MonTexte:String;
    begin
      j:=0;
      SetLength(Tab,j);
      Nbre:='';
      MonTexte:=Memo1.Text;
      for i:=1 to Length(MonTexte) do
      begin
        if MonTexte[i] in ['0'..'9'] then
          Nbre:=Nbre+MonTexte[i]
        else
        begin
          if ((Nbre<>'') or ((i=length(MonTexte)) and (Nbre<>'')))  then
          begin
            SetLength(Tab,j+1);
            Tab[j]:=StrToInt(Nbre);
            j:=j+1;
            Nbre:='';
          end;
        end;
      end;
    end;
    Donne nous un exemple de contenu du Memo1 et ce que souhaites qu'il affiche. Comme ça de notre coté, on peut tester et coller plus à tes besoins

    Voilà.
    A+

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

Discussions similaires

  1. extraire uniquement les chiffres d'une cellule
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2017, 18h25
  2. extraire chiffre dans une ligne de texte
    Par zer0o dans le forum Excel
    Réponses: 4
    Dernier message: 14/11/2014, 14h24
  3. [AC-2007] Comment récupérer seulement les chiffres dans un libellé
    Par Debutant10 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/11/2011, 13h17
  4. [Toutes versions] sélectionner uniquement les chiffres dans une phrase ?
    Par bourrico dans le forum VBA Word
    Réponses: 1
    Dernier message: 24/09/2009, 00h12
  5. [TWebBrowser] Comment trouver tous les liens dans une page ?
    Par xenos dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/01/2006, 23h36

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