Ca fait deja un petit moment que je programme en Delphi, mais je me suis rendu compte que je ne maitrisé pas encore tous les rouages du Pascal.
Je desire realisé une boucle qui parcours un tableau qui a une taille qui peut chager pendant chaque tour de boucle. Mais je ne sait pas comment faire puisque for et while évalue le valeur au premier passage, mais pas après ! Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
  j:=3;
      for i:=0 to j do
      begin
        if i=1 then j:=5;
        Memo1.Lines.Add('i : '+intToStr(i)+'  j + '+intToStr(j)); //affichage
      end;
Et voila le résultat :
i : 0 j + 3
i : 1 j + 5
i : 2 j + 5
i : 3 j + 5
On voit bien qu'il y a eut 4 tours de boucle et pas 6 !


Pour info, voici mon code Delphi:
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
      setLength(rubFille,1);
      rubFille[0]:=copieRub.No;
      for j:=0 to length(rubFille) do
      begin
        tmpSQL.Close;
        tmpSQL.SQL.Text:='select * from rubrique where rubmere_no = '+intToStr(rubfille[j]);
        tmpSQL.Open;
        while not tmpSQL.Eof do
        begin
          setLength(rubFille,length(rubFille)+1);
          rubFille[length(rubFille)-1]:=tmpSQL['Rub_no'];
          //Ajouter dans la base + droit
          //Memo1.Lines.Add('ajouter : '+tmpSQL['NOM']);
          tmpSQL.Next;
        end; //while eof
      end;  //for j to length(rubFille)

Avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
var
tmpSQL : TIBQuery;
noRub : string;
i,j{,niveauMax} : integer;
rubFille : array of integer;