begin process at 2012 05 30 18:03:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Tableau dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau dynamique

mercredi 28 décembre 2005 à 20:45:29 | Tableau dynamique

SnOOpss

Bonjour j'ai un probleme tout con, je suis en train de sous-classer un truc

struct DATADIAG
{
    bool state;
    WNDPROC ancienproc;
};

typedef struct DIALOG
{
int a;
int b;
DATADIAG* id;
}*LPDIALOG;

Avant je faisait
DIALOG dlg;
dlg.id=(DATADIAG*) malloc(100*sizeof(DATADIAG));
dlg.a=5;
aucun probleme mais pour le sous classment j'ai du faire

LPDIALOG dlg = new DIALOG;
pour pouvoir faire
SetWindowLong(tmphwnd, GWL_USERDATA,(long)dlg);

mais du coup message d'erreur de XP (pas de prb de compil)
dlg->a=5;
dlg->id=(DATADIAG*) malloc(100*sizeof(DATADIAG)); (ici)





jeudi 29 décembre 2005 à 00:50:06 | Re : Tableau dynamique

ctx_man

Salut !

Je n'ai pas regarder ces fonction, et je n'ai pas tester ce code, mais ... Je ne comprend pas pourquoi tu as été forcé d'utiliser un pointeur sur DIALOG. Si dlg est une structure DIALOG, &dlg est son adresse et donc un pointeur -> SetWindowLong(tmphwnd, GWL_USERDATA, (long) &dlg);

Le travail c'est la santé, ne rien faire c'est la préservé !!!

jeudi 29 décembre 2005 à 11:40:19 | Re : Tableau dynamique

SnOOpss

Ben en fait je suis obligé de passer par NEW et DELETE de maniere a pouvoir le memoriser, en fait je sous-classe plusieurs dialogs a la chaine par la meme procedure et dans la windproc (identique pour tout les dialog aussi) avec getwindowlong() je peux recuperer le pointeur pour pouvoir bosser, si je fait avec &dlg a la fin de la fonction il sera libéré donc irecuperable dans la windproc.
Je ne peux pas non plus utiliser static.

Et NEW ne donne qu'un pointeur,  c'est la mon probleme.

jeudi 29 décembre 2005 à 16:31:05 | Re : Tableau dynamique

ctx_man

Ah ok.
Du coup tu mélange le new et le malloc, pourquoi ne pas conservé le new ?
dlg->id=(DATADIAG*) malloc(100*sizeof(DATADIAG));
dlg->id = new DATADIAG[100]; //delete[] dlg->id;

Qu'est-ce que tu veut dire par "new ne donne qu'un poiteur" ? ou est le probleme ? il donne un poiteur et une zone, c donc exactement la meme chose qu'une variable classique.


Le travail c'est la santé, ne rien faire c'est la préservé !!!
jeudi 29 décembre 2005 à 18:56:41 | Re : Tableau dynamique

SnOOpss

Ben en fait le probleme c'est que si je travaille avec dlg.id aucun probleme mais avec dlg->id ca plante.

en fait si je met
 typedef struct DIALOG
{
DATADIAG tab[100]
}

avec le deboggeur je voit bien tab[1].state tab[2].state tab[3].state la probleme c'est que la valeur 100 n'est pas fixe elle est definie au moment de la creation
LPDIALOG dlg = new DIALOG;

voila pourquoi je fait avec malloc

si je fait
 typedef struct DIALOG
{
DATADIAG *tab;
}
tab = new DATADIAG tab[100]
dans mon debogueur je ne voit QUE tab.state (au lieu de tab[1].state)

jeudi 29 décembre 2005 à 19:18:35 | Re : Tableau dynamique

SnOOpss

C'est bon ya plus de probleme en fait c'etait moi, 2 jours que je bloque la dessus
SetWindowLong(tmphwnd, GWL_USERDATA,(long)dlg);
et je sais pas pourquoi mais en faisant des manips dans tout les sens j'avais mit
SetWindowLong(tmphwnd, GWL_USERDATA,(long)&dlg);

Merci quand meme !!

jeudi 29 décembre 2005 à 22:16:15 | Re : Tableau dynamique

ctx_man

Lol oki, content que tu ai trouver ton problème. Au passage, je ne sais pas ce que tu utilise comme debugguer, mais il est générallement possible de regarer une "expression" ainsi il te montre tab[0].state puisque c'est le premier de la liste et qu'il ne peut pas connaitre le nombre d'element du tableau. Mais tu peux lui specifier de regarder l'expression "tab[15].state". Sous VC++ ca s'appelle les "espions".

Voila, bonne continuation @++


Le travail c'est la santé, ne rien faire c'est la préservé !!!


Cette discussion est classée dans : tableau, id, dialog, dlg, datadiag


Répondre à ce message

Sujets en rapport avec ce message

C/API Win32 - Problème avec System Try.... [ par JimyRyan ] Bonjour.J'ai un programme d'on j'ai créé une interface graphique en C/API Win32.Mon derrnier problème avant de cloturer le developpement de mon prog e Probleme de Dialog VC++ [ par anaya ] Bonjour,J'espere bien que vous allez m'aider, voila mon probleme:Mon programme marche a merveille avec Domodal(); mais moi je dois utiliser autre cho Dialog dans dialog [ par banane_rose ] bonjourvoilà j'ai mon programme qui dès son execution affiche une dialog.à partir de cette dialog je peux en ouvrir d'autre mais le problème c'est que tableau de caracteres [ par infodaoudi ] bonjour,j'ai une classeclass fich{int id;char *fich}je veux initialiser une liste de cette classeFich::Fich(int a){for(int i=0;i{   id=i;   fich= "<fo Que des Dialog Box en MFC [ par adrod ] J'aimerais faire un programme composé uniquement de boites de dialogues qui se succèderaient les unes après les autres sachant qu'il y aura une partie tableau 2 dimension en C [ par Babar51 ] voila je cherche a modifié une entrée dans un tableau a 2 dimension en C ... j ai essayé le code suivant mais je n obtien que des echec ... en bon deb Afficher unu boite de dialgog contenant 1 OCX dans un prog C avec Visual Studio [ par timy94 ] J'ai bien sur réussi à insérer mon OCX (pour mon ex, un tout petit bouton) dans ma boite de dialog IDD_DIALOG1 (créé avec l'outil de Visial Studio. Pu renvoyer un tableau avec une dll en c++ [ par cedric1981 ] Bonjour à tous,voila mon probleme,j'ai crée un dll en c++ que j'utilise dans mon programme visual basic et maintenant je souhaiterais que la fonction stocker tableau dans fichier [ par amau96 ] bonjours, je suis en train d'essayer de developper une bataille navalle, pour cela, je souhaite stocker la grille dans un tableau a 2 dimentions, puis Question sur le fonctionnement de la fonction strcat [ par n_o_u_n_o_u ] Bonjour,je ne comprends pas bien le fonctionnement de la fonction strcat.Dans l'exemple ci-dessous, je n'obtiens qu'une seule sortie (le premier cout)


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,847 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales