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

Langage Delphi Discussion :

Array of array en dynamique


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut Array of array en dynamique
    voilà, j'ai besoin d'utiliser un tableau de tableaux de points pour afficher un graphe qui peut possèder plusieurs tracés de courbes.
    je veux joindre un réticule sur mon graphique.
    pour cela, à chaque fois que je déplace la souris, je suis obligé d'obturer, de retracer le repère(axes, quadrillage,graduations) et de retracer les courbes.
    les courbes sont donc stockée dans des tableaux de points qu'il faut que je
    mémorise d'où l'utilité d'un tableau de tableaux de points et en plus dynamique car la quantité de tableaux de points doit être fixée par le nombre de courbes affichées.
    bref avec une courbe, ça marche bien, j'ai testé... en revanche, je ne sais pas comment utiliser setlength dans le cadre d'un array of array (dynamique).
    partie de code pour plus de clarté bien que la proc soit sortie de son contexte...

    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
     
    Procedure Tgraphique.courbe(tailpt:integer;coulpt:Tcolor);
    var tabpt:array of Tpoint;
         i:integer;
         u:extended;
    begin
    u:=0;
    setlength(tabpt,10*tmax);
     
    for i:=0 to 10*tmax-1 do begin
    if permission2 then u:=Umax*(1-exp(-i/(1e4*Form1.R*Form1.C)));
    if permission3 then u:=Umax*exp(-i/(1e4*Form1.R*Form1.C));
    tabpt[i]:=point(round(origine.x+(waxe*(i+1)/(10*tmax))),round(origine.y-4*h*u/50));
    end;
     
    with canvas do begin
    pen.Width:=tailpt;
    pen.Color:=coulpt;
    polyline(tabpt);
    end;
    permission2:=false;
    permission3:=false;
    end;
    j'ai codé un objet Tgraphique que j'utilise dans mon unit principale.
    origine.x correspond en fait à l'origine de mon repère.
    c'est un Trpoint ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Trpoint=record
    x,y:extended;
    end;
    je fais tous mes calculs en réel et seulement à la fin je fais des rounds pour éviter les surprises à l'affichage...

    En fait je veux faire un tabpt:array of array of Tpoint; donc dynamique...
    j'ai une property nbcourbe write setcourbe qui fixe le nb de courbe affichée.
    (property dans Tgraphique)
    il faut que je puisse faire aussi setlength(tabpt[..],setcourbe)
    pour fixer ma quantité de tableaux à stocker pour le réaffichage lors de ma procedure reconstruction de l'unit principale que j'appelle à chaque déplacement de réticule.
    j'espère avoir été clair lol. (pas facile).
    je veux savoir comment fixer les dimensions d'un tableau de tableau dynamique. les dimensions étant variables( c'est là la difficulté)

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 079
    Par défaut
    SAlut
    Ca serait pas tout simplement en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var Tableau : Array of Array Of integer;
    begin
         SetLength(Tableau, 3);
         SetLength(Tableau[0],10);    //1er etage avec des point de 0 à 9
         SetLength(Tableau[1],5);    //2eme etage avec des point de 0 à 4
         SetLength(Tableau[2],20);    //dernier etage avec des point de 0 à 19
         Tableau[0,1] := 45;
         Tableau[2,19] := 666666;
    end;

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    oui, ça ,je sais faire avec des valeurs déterminées mais là je me prends la tête à formaliser mon truc avec des dimensions fluctuantes...
    il faut que je fasse tourner davantage mon ciboulot lol
    merci a+

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 079
    Par défaut
    Re
    Heuuu alors je ne comprend pas ce que tu veux faire
    Je pensais que tu avais I tableau contenant chaqu'un un nombre de J points, ca n'est pas ca ?
    Par ce que bon ok j'ai pas utilisé ca dans mon exemple mais c le meme principe

    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
     
    Public
    var Tableau : Array of Array Of integer;
     
     
    Procedure AjoutTableau(ListDePoint: Array of TPoint);
          I, J: Integer;
    begin
         //Tu rajoute un tableau de point
        J:=High(Tableau)+1;
        SetLength(Tableau,J);     
     
        //Tu dimentionne le tableau
        SetLength(Tableau[High(Tableau)], High(ListDePoint));
     
        For I := 0 to High(ListDePoint) - 1 Do
               Tableau[J,I] := ListPoint[I];
     
    [...]
     
    end;
    Nota: J'ai pas testé le code je l'ai fait "a main levée"... :p
    Et voila banco, enfin je pense... si j'ai compris ce que tu voulais.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    oui merci, je crois que tu viens de me donner la solution...
    Je n'ai pas eu le temps de regarder cet après-midi car j'avais du boulot.
    je vais essayer d'adapter ça demain.
    merci encore pour tes réponses.
    ps: le j points que tu décris est en fait 10 fois le temps de charge ou de décharge d'un condensateur.
    si tmax=10 s alors ça fait 100 points pour ma courbe.
    je devrais pouvoir m'en sortir avec ton aide. je reposte en cas de prob. sinon
    ce sera résolu

    a+ merci encore

  6. #6
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    En essayant de m'inspirer de tes lumières, j'ai tenté ça :
    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
     
    Procedure Tgraphique.courbe(tailpt:integer;coulpt:Tcolor);
    var tabpt:array of array of Tpoint;
         i,j:integer;
         u:extended;
    begin
    u:=0;
    with canvas do begin
    pen.Width:=tailpt;
    pen.Color:=coulpt;
    end;
     
    setlength(tabpt,setnbcourbes);
    setlength(tabpt[high(tabpt)],10*tmax);
    for j:=0 to setnbcourbes-1 do begin
    for i:=0 to 10*tmax-1 do begin
    if permission2 then u:=Umax*(1-exp(-i/(1e4*Form1.R*Form1.C)));
    if permission3 then u:=Umax*exp(-i/(1e4*Form1.R*Form1.C));
    tabpt[j,i]:=point(round(origine.x+(waxe*(i+1)/(10*tmax))),round(origine.y-4*h*u/50));
    end;
    canvas.polyline(tabpt[j]);
    end;
    permission2:=false;
    permission3:=false;
    end;
    quand je trace la 1ère courbe, pas de problème. En revanche, quand je trace une seconde courbe, là ça plante. setnbcourbes=2.
    En fait de réécrite dans tabpt[0,i] , ça doit pas lui plaire...
    une idée ?

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

Discussions similaires

  1. Array d'Arrays dynamiquement
    Par Jerwyn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2012, 15h22
  2. Array champs de texte Dynamique
    Par freezerhm dans le forum Flash
    Réponses: 1
    Dernier message: 04/09/2008, 21h13
  3. Réponses: 2
    Dernier message: 03/11/2007, 11h24
  4. Déclaration de type array of array of variant
    Par Drooxy dans le forum Delphi
    Réponses: 4
    Dernier message: 14/12/2006, 19h25
  5. Comment faire le tri d'un array of array ?
    Par Tchouffy dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2005, 20h55

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