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

C++Builder Discussion :

Remplissage de DynamicArray par vector


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Ao�t 2004
    Messages
    192
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activit� : Concepteur traitement de signal
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 192
    Par d�faut Remplissage de DynamicArray par vector
    Bonjour !

    J'ai un souci avec des tableaux de grande taille. Je cherche en effet � remplir un tableau (DynamicArray) par le contenu d'un vecteur. La solution simple(iste?) consiste � parcourir chaque �l�ment du vecteur et � le copier dans le tableau. Seulement, quand on a un grand nombre d'�l�ments, �a prend du temps, et le temps.... bref

    Le but ici et d'afficher rapidement le contenu du tableau dans un TChart. Avant, j'utilisais la m�thode Series->AddXY(x[i],y[i],x[i],clBlue) par exemple pour remplir le graph, mais c'est long. J'ai trouv� une m�thode plus rapide qui consiste � donner directement le tableau des x et des y au graph, seulement �a prend un DynamicArray en entr�e et donc je fais juste d�placer mon probl�me.

    Si quelqu'un avait une id�e ??
    Merci beaucoup !!!!

  2. #2
    Membre Expert
    Avatar de m�phistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par d�faut
    Une question que je me pose: dynamic array est-il un type ou simplement un tableau dynamique avec un espace oubil� ?

    dans le premier cas, je veut bien savoir ou est-ce que �a a �t� cr��... dans le second cas, �tant donn� que la stl garantis que les �l�ments d'un vector sont stoqu�s de fa�ons continue, tu peux, si tu ne veux pas vraiment recopier ton vecteur (mais c'est d�conseill�) te contenter de faire pointer le tableau vers le premier �l�ment du vector. Sinon, je ne sait pas s'il existe une methode pour recopier des blocs m�moire en entier, mais c'est aussi simple de balader un it�rateur dessus.

    Cordialement

  3. #3
    Invit�
    Invit�(e)
    Par d�faut
    Un DynamicArray c'est un type sp�cifique � Borland, qui �mule un tableau Pascal.

    A mon avis, recopier le grand tableau C++ dans un dynamic array doit aller nettement plus vite que tout copier point � point avec AddXY (la raison �tant que AddXY fait des tas de choses lors de chaque ajout de point, comme redessiner le graphique).

    Une autre m�thode qui irait probablement assez vite consisterait � cr�er un TChartSeries ind�pendant, � le remplir avec ton tableau, et � le mettre d'un coup dans le TChart, avec une fonction comme AddSeries ou Assign. Normalement, ca doit aller plus vite.

    Maintenant, ca d�pend quand m�me pas mal du nombre de points que tu veux afficher... Le composant TChart n'est pas vraiment fait pour afficher d'�normes quantit�s de donn�es.

    Francois

  4. #4
    Membre confirm�
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Ao�t 2004
    Messages
    192
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activit� : Concepteur traitement de signal
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 192
    Par d�faut
    Bonjour fcharton,

    Merci pour ta r�ponse, et merci d'avoir r�pondu � m�phistopheles !!

    En effet, c'est du type DynamicArray sp�cifique � Borland dont je parlais.
    Et j'ai vu aussi que passer directement mon tableau � une Series �tait beaucoup plus rapide que d'allouer point par point avec AddXY. C'est exactement ce que je voulais faire, mais apparemment il n'y a pas de m�thode simpliste pour recopier un vector... tant pis, je vais me contenter d'une boucle, et je vais essayer ton truc de boucler sur un tableau plut�t que de boucler sur AddXY !

    Merci � vous deux !

  5. #5
    Membre �m�rite
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par d�faut
    Hello,

    Une id�e pour recopier ton vecteur:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DynamicArray<int> toto;
    toto.Length = 10;
     
    vector<int> titi;
    for (int i=0; i<10; i++)
      titi.push_back(i);
     
    CopyMemory(&toto[0], &titi[0], 10*sizeof(int));
     
    for (int i=0; i<10; i++)
      ShowMessage(IntToStr(toto[i]));

  6. #6
    Membre confirm�
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Ao�t 2004
    Messages
    192
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activit� : Concepteur traitement de signal
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 192
    Par d�faut
    Hello,

    Merci totoche76, j'ai essay� un truc du style mais �a marchait plus ou moins bien et comme le dit m�phistopheles, c'est plut�t d�conseill� [].

    Je me suis content� de boucler pour remplir le DynamicArray que je refourgue au TChart comme ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
       Series1->XValues->Value =(TChartValues)(Xcopy); 
       Series1->XValues->Count = Taille;               
       Series1->XValues->Modified = true;           
       Series1->YValues->Value = (TChartValues)(Ycopy);
       Series1->YValues->Count = Taille;               
       Series1->YValues->Modified = true;
    �a marche tr�s bien et c'est moins long que je looper sur l'ajout de points au Chart.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Remplissage de Label par boucle
    Par Korleone dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 14/11/2009, 16h12
  2. [AC-2003] Remplissage champs texte par zone de liste d�roulante
    Par VBchris dans le forum Access
    R�ponses: 0
    Dernier message: 18/09/2009, 09h43
  3. Remplissage des formulaires par une application
    Par dot-_-net dans le forum D�buter
    R�ponses: 4
    Dernier message: 15/07/2009, 23h46
  4. Remplissage de cellules par incr�ment � partir de la premi�re vide
    Par benoit13 dans le forum Macros et VBA Excel
    R�ponses: 9
    Dernier message: 02/07/2008, 09h21
  5. remplissage de table par VB
    Par Davik dans le forum Access
    R�ponses: 14
    Dernier message: 11/05/2006, 16h10

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