bonjour,

j'utilise une extension de la class CLIST, CLISTEX.

voici la class CLIST utiliser :
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
51
52
53
54
55
56
class CListSMS : public CListEx <CTeleSSMS,CTeleSSMS>, CDefaultGestionnaire
{
public:
	CListSMS();
 
	~CListSMS();
 
 
	void GetAction();
	int GetStatus();
 
 
	inline int ValeurTimer(){return GetValeurTimer();};
	inline CLog& Log(){return *m_log;};
 
	//=============================================
	//
	//=============================================
	inline CTeleSSMS* search(const int& i)
	{
		POSITION pos;
		CTeleSSMS *elt;
		elt= new CTeleSSMS();
 
		for(pos=GetHeadPosition();pos!=NULL;)
		{
			*elt = GetNext(pos);
			if(elt->id == i)
			{
				return elt;
			}
		}
		return NULL;
		//return;
	};
 
	//=============================================
	//
	//=============================================
	POSITION searchPos(const int& i)
	{
		POSITION pos;
		CTeleSSMS elt;
 
		for(pos=GetHeadPosition();pos!=NULL;)
		{
			elt=GetNext(pos);
			if(elt.id == i)
			{
				return (pos!=NULL?pos:GetTailPosition());
			}
		}
		return pos;
	};
 
};

et voici le traitement:
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
			for(pos=m_listsms.GetHeadPosition();pos!=NULL;)
			{
				elt = m_listsms.GetAt(pos);
 
				//OPERATION ...
 
 
				if(pos!=NULL) //on sait jamais
				{
					//ici perte de 4ko a chaque passage !!!
					m_listsms.SetAt(pos,elt);
				}
				elt = m_listsms.GetNext(pos);
 
			}
donc le probleme c'est qu'a l'interrieur de la class CTeleSSMS y a des pointeur je passe donc par un operateur de recopie.
mais je ne comprend pas ou je perd cette memoire.

je pense que cette erreur me fait perdre apres la gestion des timers. Je m'explique j'ai deux timers, 1 a la seconde et l'autre a 5 seconde. au bout d'un moment le timer a 1 seconde s'arrete apres avoir repositionner le timer (traitement a l'interrieur du timer, KillTimer, ACtion, Setimer), je refait bien le settimer mais plus rien apres je reviens pas dans le timer.
mais le deuxieme timer continue bien.

la perte de 4ko ce situe dans le timer 5s.

personnellement je suis perdu, je pense que vous ne me comprendrais pas non plus, mais j'essaie quand meme.


aidez moiiiiiiii

merci par avance
Hervé