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

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut Affectation à la variable de boucle FOR 'i'
    Salut à tous, je doit dire que je suis tombé sur une erreur qui me laisse perplexe: voici le 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
    function tfrmMain.arrayToPointer(value:string;zone:boolean):Pointer;
    var i,i2 : integer;
    begin
    if zone then
    	for i:=0 to length(fieldswG) - 1 do
              if(UpperCase(fieldswG[i])=UpperCase(value)) then
              begin
                result:=@fieldswg[i];
                exit;
              end
    else
    	for i:=0 to length(fieldsw) - 1 do
              if(UpperCase(fieldsw[i])=UpperCase(value)) then
              begin
                result:=@fieldsw[i];
                exit;
              end;
    end;
    Quand je compile j'obtiens ceci:
    [Pascal Erreur] Unit1.pas(840): E2081 Affectation à la variable de boucle FOR 'i'

    Alors que:

    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
     
    function tfrmMain.arrayToPointer(value:string;zone:boolean):Pointer;
    var i,i2 : integer;
    begin
    if zone then
    	for i:=0 to length(fieldswG) - 1 do
              if(UpperCase(fieldswG[i])=UpperCase(value)) then
              begin
                result:=@fieldswg[i];
                exit;
              end
    else
    	for i2:=0 to length(fieldsw) - 1 do
              if(UpperCase(fieldsw[i2])=UpperCase(value)) then
              begin
                result:=@fieldsw[i2];
                exit;
              end;
    end;
    fonctionne...
    fieldsw et fieldswG sont des 'array of string' globaux...

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    T'as un problème dans tes begin/end.

    Voici le même code indenté à la Borland :

    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
    function tfrmMain.arrayToPointer(value: string; zone: boolean): Pointer;
    var
       i, i2: integer;
     
    begin
      if zone then
        for i := 0 to length(fieldswG) - 1 do
          if (UpperCase(fieldswG[i]) = UpperCase(value)) then
          begin
            result := @fieldswg[i];
            exit;
          end
          else
            for i := 0 to length(fieldsw) - 1 do
              if (UpperCase(fieldsw[i]) = UpperCase(value)) then
              begin
                result := @fieldsw[i];
                exit;
              end;
    end;
    [EDIT]
    En gros, tu fais une boucle sur i à l'intérieur d'une boucle sur i.

    Voici ce qui corrigerait la situation :

    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
    function tfrmMain.arrayToPointer(value: string; zone: boolean): Pointer;
    var
      i, i2: integer;
     
    begin
      if zone then
      begin
        for i := 0 to length(fieldswG) - 1 do
          if (UpperCase(fieldswG[i]) = UpperCase(value)) then
          begin
            result := @fieldswg[i];
            exit;
          end;
      end
      else
      begin
        for i := 0 to length(fieldsw) - 1 do
          if (UpperCase(fieldsw[i]) = UpperCase(value)) then
          begin
            result := @fieldsw[i];
            exit;
          end;
      end;
    end;

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Exact Il essaye d'affecter Ton else au if(UpperCase.....) au lieu d'au "if zone" ce qui est pas ce que tu veux Faut faire gaffe quand on a plusieurs structures if et/ou boucle imbriqués. On a interet a mettre le begin/else meme si il n'y a qu'un bloc d'instruction dedans En plus c'est plus lisible .. enfin je trouve

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    merci a vous deux, on mettras ça sur le compte de la fatigue

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. paramètres variables et boucle for
    Par xam44 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/03/2009, 14h18
  2. Réponses: 2
    Dernier message: 02/10/2008, 09h35
  3. affecter variable dans boucle FOR batch
    Par efferalgan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 25/10/2007, 14h25
  4. [SHELL] Variable dans boucle for
    Par magicwill dans le forum Linux
    Réponses: 6
    Dernier message: 11/08/2007, 11h31
  5. [FLASH 8] Problème nom variable et boucle for
    Par jbidou88 dans le forum Flash
    Réponses: 10
    Dernier message: 23/03/2007, 11h36

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