Problème memo/boucle

Résolu
dariusxi Messages postés 2 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 14 avril 2011 - 14 avril 2011 à 22:17
dariusxi Messages postés 2 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 14 avril 2011 - 14 avril 2011 à 23:58
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

dariusxi Messages postés 2 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 14 avril 2011
14 avril 2011 à 23:58
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
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
14 avril 2011 à 23:08
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
0
Rejoignez-nous