[RESOLU] Pointeurs dans une liste chainée et utilisation

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

[RESOLU] Pointeurs dans une liste chainée et utilisation

Message par Golfy »

Bonjour à tous,

voilà mon problème : je souhaite stocker des morceaux de mémoire dans une liste chainée (structure 'memoire'+'longueur') pour pouvoir ensuite relire et effectuer des opérations à l'aide des instructions PEEKB par exemple.

Voici ce que j'ai fait :

1) déclaration structure

Code : Tout sélectionner

;- Structures
Structure Vmsg
	Len.i
	*cmd
EndStructure
Global NewList messages.Vmsg()
2) création des éléments de la liste chainée

Code : Tout sélectionner

	AddElement(messages())
	messages()\len = tlen
	messages()\Cmd = AllocateMemory(tlen)
	CopyMemory(*bus+t,messages()\cmd,tlen)
3) travail sur les éléments

Code : Tout sélectionner

	SelectElement(messages(),LastList+t)
	chk1 = checksum(messages()\cmd, messages()\len)         ; checksum(*B, len)
	chk2 = PeekB(messages()\cmd+messages()\len-2) & $FF
Bien entendu, si j'écris sur ce forum, c'est parce que ça plante et que je suppose faire une erreur de neuneu... mais je n'arrive pas à voir cette erreur :x

Edit : Pas d'erreur dans l'utilisation de la liste chainée et des pointeurs mais un problème sur la variable 'LastList'... tout est OK :)
Dernière modification par Golfy le mar. 21/août/2012 14:33, modifié 1 fois.
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: Pointeurs dans une liste chainée et utilisation

Message par Golfy »

Ce code en revanche, marche...

Code : Tout sélectionner

;- Structures
Structure Vmsg
	Len.i
	*cmd
EndStructure
Global NewList messages.Vmsg()

Procedure affichemsg(*B, indice)
	Debug PeekB(*B)
EndProcedure

For t=0 To 9
	AddElement(messages())
	messages()\cmd = AllocateMemory(10)
	;Debug messages()\cmd
	messages()\len  = 10
	For y=0 To 9
		PokeB(messages()\cmd+y,t*10+y)
	Next y
Next t

ForEach messages()
	For t=0 To 9
		Debug PeekB(messages()\cmd+t)
	Next t
	Debug "---"
Next

ForEach messages()
	affichemsg(messages()\cmd,0)
Next
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Répondre