Bonjour,

Je me bat sur quelque chose de sans doute très simple depuis un petit moment.
La solution doit etre toute c**** et le problème doit se situer entre l'écran et la chaise.

Voici mon 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
    const double* pY1 = mongetter    
    const double* pX1 = mongetter
    double *pY2;
    double *pX2;
    pY2 = new double[i2];
    pX2 = new double[i2];
    double xi;
    wxMessageBox("A");
    for (int i = 0; i < i2; i++)
    {
        xi = (1 - i /(i1-1.0)) * pX1[0] + (i /(i2-1.0)) * pX1[i1-1];
        *(pX2+i) = xi;
        *(pY2+i) = 0;
        wxMessageBox("A " + wxString::Format(wxT("%d\n%lf\n%lf"), i, xi, *(pX2+i)));
    }
wxMessageBox("B");
 
 
// transmission à une autre méthode
Le code est sale (pas mal de test et de modifs) mais le problème est le suivant : avec la message box, ça passe, sans, ça crash (après "A" et avant "B").

Note1 : j'ai essayé avec du double* pX2 = new double[i2] et le soucis est le même.
Note2 : je ne viens pas du C++...
Note3 : idéalement j'aimerais dégager xi et l'initialisation de pY2

Merci d'avance,
K


edit :

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
    /** Get old containers and prepare new containers (time/value) */
    const double* pY1 = tmongetter    
    const double* pX1 = mongetter 
    double* pY2 = new double[i2];
    double* pX2 = new double[i2];
    double xi;
    wxMessageBox("A");
    for (int i = 0; i < i2; i++)
    {
        xi = (1 - i /(i1-1.0)) * pX1[0] + (i /(i2-1.0)) * pX1[i1-1];
        pX2[i] = 0; //double(xi);
        pY2[i] = 0;
        //wxMessageBox("A " + wxString::Format(wxT("i = %d\nX = %lf\nX = %lf\nY = %lf"), i, xi, pX2[i], pY2[i]));
    }
wxMessageBox("B");
Le code ci-dessus fonctionne, sauf quand je décommente le double(xi);
Ce serait donc un soucis avec xi...qui serait levé si je l'utilise ponctuellement dans un messagebox...

edit : avec la ligne ci dessous ça passe. Mais si ça marche dans mon cas, je perds en précision et la solution n'est pas très convenable...(donc je suis preneur d'une vraie résolution de mon soucis)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 pX2[i] = floor(xi*100)/100;