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 :

Générer des variables avec une boucle


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut Générer des variables avec une boucle
    Bonjour,

    Je suis débutant en Delphi et je voudrai créer trois variable Z1, Z2 et Z3 à partir de zz1, zz2 et zz3. Plutôt que de faire Z1=qqchose+zz1 et recommencer pour Z2 et Z3 j'aimerai utiliser une boucle et générer comme ça les trois variables d'un coup. J'ai essayé avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:=1 to 3 do
    begin
        j:=IntToStr(i);
        Z+j:=Zmax-zz+j;
    end;

    mais ça marche pas. Est-ce que quelqu'un sait comment faire ?

    Merci d'avance.
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Pourquoi ne pas utiliser un tableau?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Z : array[0..2] of integer;
     zz : array[0..2] of integer;
    Et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i:=1 to 3 do
    begin
        Z[i]:=Z[High(Z)]-zz[i];
    end;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Oui ça ne peut pas marcher...

    Tu peux utiliser un tableau de 3 valeurs, une liste, un record, bref une structure.

    Sinon, vu que tu as fait une boucle de 5 lignes, il vaut mieux faire 3 lignes :
    z1 := zz1 + qqueschoses;
    z2 := zz2 + qqueschoses;
    z3 := zz3 + qqueschoses;

    Si vraiment tu as un nombre dynamic de variable ou un grand nombre de variables utilise Array of MonType ou si le nombre est fixe array [0..MonNombre] of MonType.

    Je trouve tout de même qu'avec un bon copier coller, cela va vite...

    A toi de voir.

  4. #4
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut
    Je ne peux pas utiliser de tableau parce que pour en faire un il fait déclarer le dit tableau dans la partie déclaration du programme et je n'y ai pas accès, je peux juste bidouiller le corps du programme...

    Sinon, vu que tu as fait une boucle de 5 lignes, il vaut mieux faire 3 lignes
    A terme je voudrai faire ça avec plus de 3 variables...
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    As-tu accès au .pas ? Tes variables sont déclarées où ??? Tu en as combien ???

    Essaye de nous donner le maximum d'information, car je ne comprends pas comment tu peux faire en Delphi pour ne pas avoir accès aux déclarations.

  6. #6
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    Citation Envoyé par Anamelech
    Bonjour,

    Je suis débutant en Delphi et je voudrai créer trois variable Z1, Z2 et Z3 à partir de zz1, zz2 et zz3. Plutôt que de faire Z1=qqchose+zz1 et recommencer pour Z2 et Z3 j'aimerai utiliser une boucle et générer comme ça les trois variables d'un coup. J'ai essayé avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:=1 to 3 do
    begin
        j:=IntToStr(i);
        Z+j:=Zmax-zz+j;
    end;

    mais ça marche pas. Est-ce que quelqu'un sait comment faire ?

    Merci d'avance.
    Appréciation perso : Tu cherches bien des complications pour rien, affectes tes variables l'une après l'autre, c'est bien plus simple.

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  7. #7
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut
    J'ai pas accès à la partie déclaration parce que je travaille avec un logiciel de modélisation qui est apparemment écrit en Delphi (y'a rien d'indiqué) pour ce qui est de l'entrée des différentes données/caractéristiques de ce que l'on veut modéliser. Du coup je ne sais pas comment sont déclarées les variables mais je peux quand même en créer de nouvelles directement dans ce que je pense être le corps du programme !

    Appréciation perso : Tu cherches bien des complications pour rien, affectes tes variables l'une après l'autre, c'est bien plus simple.
    Avec plus d'une dizaine de variables je trouve ça un peu lourd et pas très joli...
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Ok... C'est quoi ton modéliseur, que je ne travaille pas avec (j'aimerais savoir, ce ne serais pas together)

    Bon, sinon, sérieusement, quelle doit être la portée de tes nouvelles variables ? Si ce n'est que dans ta fonction, alors tu peux faire :
    var
    montableau : array of MonType;
    dans ta fonction ou procedure.

    Sinon tu es bloquée. Tes variables Z1, ... sont déclarées où ???

  9. #9
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut
    Je les déclare pas ! je mets Z:=un truc et il fait comme si elles étaient déclarées ce qui n'est pas a priori possible si c'est en Delphi mais ça lui pose pas de problème ! Et comme ça ressemble furieusement à du Delphi je sais pas trop comment ça marche...Sinon c'est un programme qui a été développé par un laboratoire et que mon chef a récupéré et m'a refilé, donc je sais pas grand chose dessus (et j'ai l'impression que mon chef non plus...).
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Et bien alors au lieu de faire Z := Montruc, fait un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 0 to Z.Count-1 do
      Z[i] := zz[i] + quelqueschoses;
    Il va te dire que ton z et ton zz sont des array of LeurType.

    Sinon ensuite je ne vois pas d'autres solutions que de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    z1 := zz1 + ...;
    z2 := zz2 + ...;
    .
    .
    .
    Voilà.

  11. #11
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut
    Il veut pas, il dit que la variable n'est pas définie, pourtant si je la déclare sous une autre forme que celle d'un tableau il dit rien et exécute le programme comme il faut...
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    peut-être tu peux copier coller environs 20 lignes de code...
    peut-être quelqu'un pourra te dire de quel langage il s'agit...

    Il y a toute sorte d'indice dans 20 lignes de codes...
    exemple d'un if en Delphi:
    exemple en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if (a==1) 
     {
          b=1;
     }
    exemple en Python:
    Bref, j'ai pas l'intension de tous les faire...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  13. #13
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut
    Argh ! En fouillant dans le logiciel de *ù$*^$)=àç ! je viens de trouver une rubrique variables mais il semblerait que les "amis" de mon chef lui ont refilé une version light, du coup on n'a pas accès au déclaration de variables ! Mais je sais toujours pas pourquoi je peux me servir de nouvelles variables non-déclarées....


    Sinon voici un extrait de code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    E:=FloatToStr(Energie);D:=FloatToStr(Duree_pulse*1000);
    Tiret:='-';Joule:='J';milliseconde:='ms';
    for i:=1 to 1 do
    begin
      dYcum:=(i-1)*decalageY;
      Ylas:=Y_depart+dYcum;
      X_depart:=Xmin+decalageX/2;
      for j:=1 to nb_pulses do
      begin
    C'est bien du Delphi ?
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Ca ressemble beaucoup entk!

    Pour ce qui est de l'utilisation des variables non déclarées sans problèmes,
    je peux pas l'expliquer...à moins que tu ai beaucoup de chance...
    et que les variables que tu as nomées et tentées d'utiliser soit déjà déclaré!
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  15. #15
    Membre habitué Avatar de Anamelech
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 134
    Points : 133
    Points
    133
    Par défaut
    ça peut pas être un coup de bol, parce que quand j'appelle mes variables zzz1, ça fonctionne et je pense qu'il y a peu de chance que les gusses qui ont fait ce programme aient appelé une variable comme ça, pareille pour une variable jhgft, alors....
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et qu'on ne sait pas pourquoi. Ici, nous avons réuni théorie et pratique: rien ne fonctionne...et on ne sait pas pourquoi !" Albert Einstein

  16. #16
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Ce ne serait pas du Delphi Script (DScript) ou un truc comme ça par hasard ?
    Bidouilleuse Delphi

Discussions similaires

  1. initialisation des variable avec une boucle
    Par grospatapouf dans le forum Langage
    Réponses: 10
    Dernier message: 10/01/2009, 12h17
  2. Afectation des variables dans une boucle
    Par Yoni Lebene dans le forum Delphi
    Réponses: 3
    Dernier message: 05/01/2007, 18h52
  3. Reproduire des controles avec une boucle
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/06/2006, 11h46
  4. [MySQL] Traitement des variables d'une boucle for
    Par liryc78 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/03/2006, 20h53
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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