Page 1 sur 1

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

Publié : mar. 21/août/2012 11:23
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 :)

Re: Pointeurs dans une liste chainée et utilisation

Publié : mar. 21/août/2012 11:50
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