Problème memo/boucle [Résolu]

Signaler
Messages postés
2
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
14 avril 2011
-
Messages postés
2
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
14 avril 2011
-
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 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




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 réponses

Messages postés
2
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
14 avril 2011

Bonsoir,

merci d'avoir répondu avec célérité ! Ca marche nickel
Concernant ma logique je ne connais pas très bien delphi, a vrai dire cela fait +- 6 ans que je n'ai plus touché à un compilateur donc faut le temps de reprendre ses marques ^^
Quoiqu'il en soit un grand merci

Bonne soirée
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
15
Salut,

Tu utilises mal Copy(). Relis bien l'Aide en ligne de Delphi.
Et tu as aussi une drôle de logique.

procedure TForm1.Button3Click(Sender: TObject);
  var     Nombre  : string ;
          i,j     : integer;
          tableau : array of longint;
  begin
  SetLength(tableau, memo1.Lines.Count);

  for i := 0 to memo1.Lines.Count-1 do begin
    Nombre := memo1.Lines[i];
    for j := 1 to Length(Nombre) do
        tableau[i] := tableau[i] + strtoint(nombre[j]);
  end;

  Memo2.Text:='';
  for i := 0 to High(tableau) do Memo2.Lines.Add(IntToStr(tableau[i]));
end;


_______________________________________
Soutenez Wikimédia France aujourd'hui : http://dons.wikimedia.fr