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 :

Problème Memo/boucle for


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème Memo/boucle for
    Bonsoir,

    je rencontre un problème dans le traitement de données contenues dans un mémo.
    Je dois récupérer des nombres, chiffres par chiffres contenus dans le mémo 1 vers mon tableau pour ensuite les additionner
    par exemple

    12345 = 1+2+3+4+5
    ces nombres sont composés de 5 chiffres au minimum et 10 au max
    lorsque ma boucle for J (l'imbriqué) est paramétrée sur 1 to 5 pas de soucis
    exemple 12345 = 1+2+3+4+5 = 15 (affiché dans memo2)

    par contre lorsque ma boucle est for J est paramétrée sur 6 et+ (10 max) le dernier caractère est réitéré et additionné

    exemple sur boucle J 1 to 10

    12345 = 1+2+3+4+5+5+5+5+5+5 ce qui renvoie une valeur erronée

    avec un nombre composé de 10 chiffre aucuns soucis

    En espérant que vous puissiez éclairer ma lanterne
    je vous fais parvenir ci bas le code utilisé

    Bonne soirée et cordialement

    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
    procedure TForm1.Button3Click(Sender: TObject);
    var nombre : string ;
    i,j: integer;
    tableau : array of longint;
     
    begin
    Memo2.Text:='';
    nombre := (memo1.Lines.Text);
    SetLength(tableau,memo1.Lines.Count + 1);
     
    for i := 0 to memo1.Lines.Count -1 do
      begin
      for j := 1 to 10  do
            begin
               if copy(memo1.Lines[I],j,1) <> '' then
     
                  nombre := copy(memo1.Lines[I],j,1);
                  tableau[i] := tableau[i] + strtoint(nombre);
     
                end;
     
          Memo2.Lines.Add(IntToStr(tableau[I]));
     
      end;
     
    end;
     
    end.

  2. #2
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    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
    procedure TForm1.Button3Click(Sender: TObject);
    var
      nombre                 : string;
      i, j                   : integer;
      tableau                : array of longint;
    begin
      Memo2.Text := '';
      nombre := (memo1.Lines.Text);
      SetLength(tableau, memo1.Lines.Count + 1);
     
      for i := 0 to memo1.Lines.Count - 1 do
      begin
        for j := 1 to 10 do
        begin
          if  (memo1.Lines[I][J] in ['0'..'9']) then
           begin
            nombre := memo1.Lines[I][J];
            tableau[i] := tableau[i] + strtoint(nombre);
           end;
        end;
        Memo2.Lines.Add(IntToStr(tableau[I]));
      end;
    end;
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    bonsoir,


    merci d'avoir répondu avec célérité !
    je rencontre un soucis avec la ligne suivante
    if (memo1.Lines[I][J] in ['0'..'9']) then
    erreur d'étendue

    Cordialement et bonne soirée

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Bonjour, par partirais sur une autre approche

    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
     
    var
      i,j,k: Integer;
      s:string;
      c: Char;
    begin
      for i := 0 to Memo1.Lines.Count - 1 do
      begin
        s := Memo1.Lines[i];
        k := 0;
        for j := 1 to Length(s) do
        begin
          c := s[j];
          if c in ['0'..'9'] then
             Inc(k, Ord(c) - Ord('0'));
        end;
        Memo2.Lines.Add(IntToStr(k));
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Je ne dirais pas mieux
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Voila que je reprends delphi (delphi 6) après + de 6 ans d'inactivité ^^
    Je pensais que c'était comme le vélo et bien non ...
    D'autant que j'utilise actuellement la version embarcadero xe....
    Heureusement ce n'est pas la doc qui manque et qui plus est je constate qu'il y a encore des amateurs delphi.

    En conclusion persévérance ^^

    Quoiqu'il en soit un grand merci de vos réponses


    Au plaisir et cordialement.

  7. #7
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    @ Paul TOTH

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if c in ['0'..'9'] then Inc(k, Ord(c) - Ord('0'));

    C'est le genre de truc qui me laisse baba !
    Je me demande où tu vas chercher des trucs comme ça.

    Ca a un parfum de logique orientale, je trouve...

Discussions similaires

  1. [ActionScript] Problème avec boucle 'FOR'
    Par BnA dans le forum Flash
    Réponses: 7
    Dernier message: 02/11/2006, 09h26
  2. [VBS][Débutant] Problème syntaxe boucle For
    Par _alex_ dans le forum VBScript
    Réponses: 2
    Dernier message: 26/07/2006, 14h26
  3. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31
  4. [batch]inventaire réseau-problème de boucle "for"
    Par mathieu_r dans le forum Windows
    Réponses: 1
    Dernier message: 23/06/2006, 20h17
  5. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55

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