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 :

Affectation à la variable de boucle FOR 'i'


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    delphi
    Inscrit en
    Août 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Algérie

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

    Informations forums :
    Inscription : Août 2019
    Messages : 11
    Par défaut Affectation à la variable de boucle FOR 'i'
    Bonjour

    J'ai ce 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
    46
    47
    48
    49
    procedure TForm1.Button5Click(Sender: TObject);
    var
     xlapp,shet : OleVariant;
     i,i1,j : integer;
     s: string;
    begin
    //------------------------------------------------------------------------------
    xlapp := createOleObject ('Excel.Application');
    shet := createOleObject('Excel.sheet');
    shet := xlapp.workbooks.add;
    i1 := 0;
    for i := 0 to dbgrid1.Columns.Count-1 do
      begin
        if dbgrid1.Columns[i].Visible = true then
        begin
          xlapp.cells(1,i1+1):=dbgrid1.Columns[i].Title.Caption;
          inc(i1);
        end;
        dbgrid1.DataSource.DataSet.First;
        j:=2;
        while not dbgrid1.DataSource.DataSet.Eof do
        begin
          i1 := 0;
          for i := 0 to dbgrid1.Columns.Count-1 do --------------------------> Affectation à la variable de boucle FOR 'i' error
     
          begin
            if dbgrid1.Columns[i].Visible = true then
            begin
              if dbgrid1.Columns[i].FieldName = 'NumCert' then
              begin
                xlapp.cells(j,i1+1):=j-1;
              end
              else
              begin
                xlapp.cells(j,i1+1):=dbgrid1.Fields[i].AsString;
              end;
              inc(i1);
            end;
          end;
     
          inc(j);
          dbgrid1.DataSource.DataSet.Next;
     
        end;
        s:= extractfilepath(application.ExeName)+'1.xlsx';
        shet.saveas( s);
        shet.close;
      end;
    end;
    lorsque je le compile, j'obtiens ce message d'erreur:
    Affectation à la variable de boucle FOR 'i'

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 910
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Le message d'erreur était clair.
    La seconde boucle for i := se trouve en effet à l'intérieur du do begin...end de la première ; la même variable "i" y est donc remployée à tort.
    La rebaptiser k suffirait à lever l'erreur.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre expérimenté Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 325
    Par défaut
    Bonjour Appakar,
    Ta ligne 12 utilise i comme index de boucle. Lorsqu'elle est exécutée, i est donc initialisée.
    Ta ligne 24 tente aussi d'initialiser cette même variable alors que tu es toujours dans ta première boucle. Elle génère donc un code d'erreur.
    Tu dois donc utiliser une autre variable pour ta seconde boucle.

    Note que, dans certains langages, tu peux modifier une variable index de boucle. Non seulement le programme peut alors avoir des comportements inattendus, mais il devient surtout très difficile à maintenir.
    La pratique est interdite en Pascal, et fortement déconseillée dans les autres...
    Belle soirée,

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/10/2008, 09h35
  2. affecter variable dans boucle FOR batch
    Par efferalgan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 25/10/2007, 14h25
  3. [SHELL] Variable dans boucle for
    Par magicwill dans le forum Linux
    Réponses: 6
    Dernier message: 11/08/2007, 11h31
  4. [FLASH 8] Problème nom variable et boucle for
    Par jbidou88 dans le forum Flash
    Réponses: 10
    Dernier message: 23/03/2007, 11h36
  5. Affectation à la variable de boucle FOR 'i'
    Par nek_kro_kvlt dans le forum Delphi
    Réponses: 3
    Dernier message: 11/10/2006, 17h03

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