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 :

Migration TChart de Rad2010 vers Sydney10.4: zoom incorrect!


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Migration TChart de Rad2010 vers Sydney10.4: zoom incorrect!
    Bonjour,
    J’ai migré une application C++Builder Rad2010 vers Sydney10.4, tous marchent à peu près sauf le zoom de TChart n’est pas correct sous Sydney10.4.
    Voici la copie écran pour une simple affichage des trois BarGraph via TChart.
    Nom : _0000000Chart.jpg
Affichages : 97
Taille : 426,3 Ko

    Voici les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	// Test Chart
    	for(int ii=0; ii<100; ++ii)
    	{
    		Chart1->Series[0]->AddXY(ii, sin(2*3.1415926*ii/1000.), "", clTeeColor);
    		Chart1->Series[1]->AddXY(ii, sin(2*3.1415926*ii/1000.-M_PI*2/3.), "", clTeeColor);
    		Chart1->Series[2]->AddXY(ii, sin(2*3.1415926*ii/1000.-M_PI*4/3.), "", clTeeColor);
    	}
    Le problème : quand on zoom les bars, les largeurs ainsi que les décalages des trois se changent correctement sous Rad2010, on voit bien les 3 après le zoom.
    Mais quand compilé sous Sydney10.4, les largeurs ainsi que les décalages des trois ne changent pas lors de zoom, on voit les 3 bars superposé et on ne peut pas distinguer les 3.
    J'ai réussi de décaler par programme, mais les largeurs sont toujour identique, elle n'augmente pas lors zoom (comme dans Rad2010).
    Merci par avance
    Cordialement
    Xavier

  2. #2
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Je ne sais pas quelle option doit être crochée dans le TChart

  3. #3
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut.
    peux tu poste le .h ou hpp de la fonction ->AddXY
    par ailleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Chart1->Series[0]->AddXY(ii, sin(2*3.1415926*ii/1000.), "", clTeeColor);
    pourquoi le . après la valeur

    la fonction sin est elle codée de manière similaire sous Sydney10.4 ?
    essaie avec la version se trouvant dans la std

    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
     
    #include <iostream>
    #include <cmath>
    #include <cerrno>
    #include <cfenv>
     
    #pragma STDC FENV_ACCESS ON
    const double pi = std::acos(-1);
    int main()
    {
        // typical usage
        std::cout << "sin(pi/6) = " << std::sin(pi/6) << '\n'
                  << "sin(pi/2) = " << std::sin(pi/2) << '\n'
                  << "sin(-3*pi/4) = " << std::sin(-3*pi/4) << '\n';
        // special values
        std::cout << "sin(+0) = " << std::sin(0.0) << '\n'
                  << "sin(-0) = " << std::sin(-0.0) << '\n';
        // error handling 
        std::feclearexcept(FE_ALL_EXCEPT);
        std::cout << "sin(INFINITY) = " << std::sin(INFINITY) << '\n';
        if (std::fetestexcept(FE_INVALID))
            std::cout << "    FE_INVALID raised\n";
    }
    et enfin
    pour analyser les différences
    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
     
    int ValA;
    int ValB;
    int ValC;
    int IFileHandle1= FileCreate(L"tab1.txt");
    int IFileHandle2= FileCreate(L"tab2.txt");// Creation des Handle de fichiers
    int IFileHandle3= FileCreate(L"tab3.txt");
    for(int ii=0; ii<100; ++ii)
     
    	{
    		ValA= sin(2*3.1415926*ii/1000.), "", clTeeColor);
                    FileWrite(IFileHandle1, &ValA sizeof(ValA));
    		ValB= sin(2*3.1415926*ii/1000.-M_PI*2/3.), "", clTeeColor);
                    FileWrite(IFileHandle2, &ValB sizeof(ValB));
    		ValC= sin(2*3.1415926*ii/1000.-M_PI*4/3.), "", clTeeColor);
                    FileWrite(IFileHandle3, &ValC sizeof(ValC));
    	}
    FileClose(IFileHandle1);// fermeture des Handle
    FileClose(IFileHandle2);
    FileClose(IFileHandle3);
    // Il ne reste plus qu'a analyser et comparer les résultats avec Excel par exemple
    // et voir ou se situe les différences entre les versions de C++Builder
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  4. #4
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci de ton investigation.
    En effet, j'ai mis trois lignes simples pour tracer 3 spectres différents à la place de sin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	// Test Chart
    	for(int ii=0; ii<100; ++ii)
    	{
    		Chart1->Series[0]->AddXY(ii, ii, "", clTeeColor);
    		Chart1->Series[1]->AddXY(ii, 10+ii, "", clTeeColor);
    		Chart1->Series[2]->AddXY(ii, 20+ii, "", clTeeColor);
    	}
    Les effets sont les mêmes: sous Sydney, tous les trois bars sont superposés quand zoomé!
    Voir les images:
    Nom : Chart compare.jpg
Affichages : 62
Taille : 403,6 Ko

    J'ai l'impression que ce phénomène apparait dans le mode BarGraph: quand zoomé, les bars ne se décalenet pas (sous Rad2010, c'est automatiquement OK).
    Cordialement
    Xavier

  5. #5
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    J'ai oublié les .h

    Rad2010:
    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
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <ExtCtrls.hpp>
    #include <StdCtrls.hpp>
    #include "Chart.hpp"
    #include "Series.hpp"
    #include "TeEngine.hpp"
    #include "TeeProcs.hpp"
    //---------------------------------------------------------------------------
     
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
    	TChart *Chart1;
    	TBarSeries *Series1;
    	TBarSeries *Series2;
    	TBarSeries *Series3;
    	TBarSeries *Series4;
    	TBarSeries *Series5;
    	TBarSeries *Series6;
    	TBarSeries *Series7;
    	TBarSeries *Series8;
    	TBarSeries *Series9;
    	TBarSeries *Series10;
    	TBarSeries *Series11;
    	TBarSeries *Series12;
    	TBarSeries *Series13;
    	TBarSeries *Series14;
    	TBarSeries *Series15;
    	TBarSeries *Series16;
    	TBarSeries *Series17;
    	TBarSeries *Series18;
    	TBarSeries *Series19;
    	TBarSeries *Series20;
     
    private:	// User declarations
    public:		// User declarations
    	__fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    Sydney10.4:
    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
    50
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <ExtCtrls.hpp>
    #include <StdCtrls.hpp>
    #include <VCLTee.Chart.hpp>
    #include <VCLTee.Series.hpp>
    #include <VclTee.TeeGDIPlus.hpp>
    #include <VCLTee.TeEngine.hpp>
    #include <VCLTee.TeeProcs.hpp>
     
    //---------------------------------------------------------------------------
     
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
    	TChart *Chart1;
    	TBarSeries *Series1;
    	TBarSeries *Series2;
    	TBarSeries *Series3;
    	TBarSeries *Series4;
    	TBarSeries *Series5;
    	TBarSeries *Series6;
    	TBarSeries *Series7;
    	TBarSeries *Series8;
    	TBarSeries *Series9;
    	TBarSeries *Series10;
    	TBarSeries *Series11;
    	TBarSeries *Series12;
    	TBarSeries *Series13;
    	TBarSeries *Series14;
    	TBarSeries *Series15;
    	TBarSeries *Series16;
    	TBarSeries *Series17;
    	TBarSeries *Series18;
    	TBarSeries *Series19;
    	TBarSeries *Series20;
     
    private:	// User declarations
    public:		// User declarations
    	__fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

  6. #6
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    salut
    pas certain essaye le code que j'ai posté et analyse les 3 fichiers sous Excel pour les 2 plateformes
    tu verras tout de suite si il y a une différence

    par ailleurs la version de Thart a vraisemblablement évolué depuis 2010 !
    vérifie si tu ne dispose pas d'une mise a jour

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  7. #7
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Salut,
    peut-être j'ai mal exprimé mon problème.
    Il s'agit d'un test de chart des deux versions C++Builder: toutes les valeurs sont correctement tracées et bars superposées dans les deux cas.
    Quand on zoom dans le cas Sydney10.4, les bars sont toujours superposés.
    Si on complie avec Rad2010, les bars ne sont pas superposés lors de zoom: cela permet de visualiser correctement sans besoin de modifier les codes.

    J'ai essayé ton code (désolé, je ne comprends pas comment le faire):
    j'ai copié dans mon projet de test C++Builder2010 existant, il ne reconnait pas #include <cfenv>
    Merci d'avance
    Xavier

  8. #8
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    salut
    tu crée simplement un nouveau projet et tu execute 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
     
    void test()
    {
    int ValA;
    int ValB;
    int ValC;
    int IFileHandle1= FileCreate(L"tab1.txt");
    int IFileHandle2= FileCreate(L"tab2.txt");// Creation des Handle de fichiers
    int IFileHandle3= FileCreate(L"tab3.txt");
    for(int ii=0; ii<100; ++ii)
     
    	{
    		ValA= sin(2*3.1415926*ii/1000.), "", clTeeColor);
                    FileWrite(IFileHandle1, &ValA sizeof(ValA));
    		ValB= sin(2*3.1415926*ii/1000.-M_PI*2/3.), "", clTeeColor);
                    FileWrite(IFileHandle2, &ValB sizeof(ValB));
    		ValC= sin(2*3.1415926*ii/1000.-M_PI*4/3.), "", clTeeColor);
                    FileWrite(IFileHandle3, &ValC sizeof(ValC));
    	}
    FileClose(IFileHandle1);// fermeture des Handle
    FileClose(IFileHandle2);
    FileClose(IFileHandle3);
    // Il ne reste plus qu'a analyser et comparer les résultats avec Excel par exemple
    // et voir ou se situe les différences entre les versions de C++Builder
     
    }
    ensuite tu appelle simplement la procédure test par exemple dans le constructeur de ta Form
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  9. #9
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    J'ai copié dans ma form, une erreur de compilation: "Statment missing"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		ValA= sin(2*3.1415926*ii/1000.), "", clTeeColor);

  10. #10
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    effectivement une petite erreur s'est glissée
    code correct
    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
     
    void Test()
     {
     
    	const double pi = 3.1415926;
     
    	float        ValA;
    	float        ValB;
    	float        ValC;
    	AnsiString Ab;
    	int IFileHandle1= FileCreate(L"ValA.txt");
    	int IFileHandle2= FileCreate(L"ValB.txt");// Creation des Handle de fichiers
    	int IFileHandle3= FileCreate(L"ValC.txt");
    	for(int ii=0; ii<100; ++ii)
    	   {
    			ValA= Sin(2*pi*ii/1000);
    			Ab=FloatToStr(ValA)+AnsiString("\r\n");
    			FileWrite(IFileHandle1, Ab.c_str(), Ab.Length());
    			ValB= Sin(2*pi*ii/1000-M_PI*2/3);
    			Ab=FloatToStr(ValB)+AnsiString("\r\n");
    			FileWrite(IFileHandle2, Ab.c_str(), Ab.Length());
    			ValC= Sin(2*pi*ii/1000-M_PI*4/3);
    			Ab=FloatToStr(ValC)+AnsiString("\r\n");
    			FileWrite(IFileHandle3, Ab.c_str(), Ab.Length());
    	   }
    	FileClose(IFileHandle1);// fermeture des Handle
    	FileClose(IFileHandle2);
    	FileClose(IFileHandle3);
    	// Il ne reste plus qu'a analyser et comparer les résultats avec Excel par exemple
    	// et voir ou se situe les différences entre les versions de C++Builder
    };
    il ne reste a ajoter dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Test();// avant la déclartion de la Form
    et pour lâppel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
      Test(); // dans le constructeur de la Form
     
    }
    Résultat sous Excel

    Conclusion les fichiers sont identiques
    il doit exister des différences entre la version TChart d3 2010 et 10.4

    cdlt
    Fichiers attachés Fichiers attachés
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  11. #11
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci de tes codes pour enregistrer des données sur un fichier!
    En effet, j'ai utilisé depuis des année les fonctions sous Memo pour enregistrer des données sur disque.
    Quand le volume de données est important, la fonction SaveToFile de Memo prend trop de temps: gênant si je faire des mesures en temps réel.
    Avec tes codes, çà beaucoup plus vite!

    Pour le problème d'affichage TChart (BarGraph), je continue à faire des investigations.
    Cordialement
    Xavier

  12. #12
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    En fait c’est 3 fichiers un par série
    Je te conseille de prendre contact avec Streema l’éditeur de Tchart pour lui demander conseil
    Peut-être un nouveau paramètre
    Cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

Discussions similaires

  1. Réponses: 26
    Dernier message: 12/11/2008, 17h59
  2. migration de base access vers postgres
    Par greg_ggl dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/03/2006, 10h33
  3. [PostGre] Migration de Oracle 8i vers PostGre ?
    Par delphim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 21/04/2004, 17h04
  4. [Migrat+doc] de Netbeans vers Eclipse d'une applic existante
    Par vempiria dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/04/2004, 08h23
  5. Migration 7.3.4 vers 9.2
    Par childeric dans le forum Administration
    Réponses: 8
    Dernier message: 12/03/2004, 09h45

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