Page 1 sur 4

Listes Chainées

Publié : lun. 12/oct./2009 9:42
par langa68
Bonjour,
J'aimerais comprendre la fonction "ListesChainées" et pour cela j'ai écrit un petit code en me basant sur le fichier aide de PB. Malheureusement mon code ne fonctionne pas.Error: Line 55-Fichier() is not aa function, array, macro or linked list
Qui peut me dire quelle est mon erreur?

Voici mon code:

Code : Tout sélectionner

Structure Fichier
  Name.s
  Alter.l
  Wohnort.s
EndStructure
NewList Fichier.Fichier()
;----Procedures:
Declare Fenetre()
Declare Ajout_Element()
Declare Quitter()


;----Programme:
Fenetre()
  
Procedure Fenetre()
  x=80
  y=30
  If OpenWindow(Fenetre, 216, 0, 400, 150, "Listes Chaînées ",  #PB_Window_SystemMenu | #PB_Window_TitleBar |#PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(Fenetre_creation_fichiers))
      x=x-95
      TextGadget(1, x, y, 90, 20, "Nom:",#PB_Text_Right)
      x=x+100
      StringGadget(2, x,  y, 306, 20, "")
      y=y+30
      ButtonGadget(3, x,y , 60, 40,"Quitter"); "Quitter")
    EndIf
  EndIf
  Repeat
    Event=WaitWindowEvent()
    If Event=#PB_Event_Gadget
      Select EventGadget()
        Case 2;Nom    
          Nom$ = GetGadgetText(8)
        Case 3
          Ajout_Element()
          Quitter()  
        Case#PB_Event_CloseWindow 
      EndSelect 
    EndIf
  Until Event =#PB_Event_CloseWindow
EndProcedure
  
Procedure Quitter() 
  x=x-70
  y=y-155
  MessageRequester("Information","Quitter?",#PB_MessageRequester_Ok)
  End
EndProcedure

Procedure Ajout_Element()
  AddElement(Fichier())
  Personne()\Nom = Nom$
EndProcedure

Re: Listes Chainées

Publié : lun. 12/oct./2009 9:52
par TazNormand
Salut

déclare ta liste chaînée en global :

Code : Tout sélectionner

Global NewList Fichier.Fichier()
ensuite, tu vas avoir une erreur sur

Code : Tout sélectionner

Personne()\Nom = Nom$
Normal puisque Personne() ne correspond à rien, je pense que la syntaxe correcte serait plutôt :

Code : Tout sélectionner

Fichier()\Name=nom$
Et surtout, vas jeter un oeil au tuto sur les listes chaînées, pas seulement la doc de PB qui est quelque peu succinte

Re: Listes Chainées

Publié : lun. 12/oct./2009 9:55
par djes
Ta liste chaînée n'est pas visible à l'intérieur de ta procédure. Soit tu la mets en Shared (partagée, visible à l'intérieur de ta procédure), soit au début du programme en Global (visible par toutes les procédures)

Code : Tout sélectionner

;
;
Structure Fichier
	Name.s
	Alter.l
	Wohnort.s
EndStructure

NewList Fichier.Fichier()
;----Procedures:
Declare Fenetre()
Declare Ajout_Element()
Declare Quitter()

;----Programme:
Fenetre()

Procedure Fenetre()
	x=80
	y=30
	If OpenWindow(Fenetre, 216, 0, 400, 150, "Listes Chaînées ", #PB_Window_SystemMenu | #PB_Window_TitleBar |#PB_Window_ScreenCentered)
		If CreateGadgetList(WindowID(Fenetre_creation_fichiers))
			x=x-95
			TextGadget(1, x, y, 90, 20, "Nom:",#PB_Text_Right)
			x=x+100
			StringGadget(2, x, y, 306, 20, "")
			y=y+30
			ButtonGadget(3, x,y , 60, 40,"Quitter"); "Quitter")
		EndIf
	EndIf
	Repeat
		Event=WaitWindowEvent()
		If Event=#PB_Event_Gadget
			Select EventGadget()
			Case 2;Nom
				Nom$ = GetGadgetText(8)
			Case 3
				Ajout_Element()
				Quitter()
			Case#PB_Event_CloseWindow
			EndSelect
		EndIf
	Until Event =#PB_Event_CloseWindow
EndProcedure

Procedure Quitter()
	x=x-70
	y=y-155
	MessageRequester("Information","Quitter?",#PB_MessageRequester_Ok)
	End
EndProcedure

Procedure Ajout_Element()
	Shared Fichier()
	AddElement(Fichier())
	;Personne()\Nom = Nom$
EndProcedure
Edit: Grilled par taznormand ;)

Re: Listes Chainées

Publié : lun. 12/oct./2009 20:01
par langa68
Merci pour la réponse.
Je pense que pour sauvegarder les données créées avec les Listes Chainées, on procède de la même façon qu'avec les autres fichiers. C'est a dire avec CreateFile , WriteStringN ,OpenFile , ReadFile etc...

Re: Listes Chainées

Publié : lun. 12/oct./2009 20:39
par Anonyme
Va sur ton compte downloadé la dernière version 8)

Re: Listes Chainées

Publié : lun. 12/oct./2009 21:22
par langa68
la dernière version de quoi??
Est-ce la réponse à ma question??
je ne comprend pas!!

Re: Listes Chainées

Publié : lun. 12/oct./2009 21:25
par venom
Tu va telecharger la version 4.40 de purebasic il y a une options qui gère les liste chainée :wink:





@++

Re: Listes Chainées

Publié : lun. 12/oct./2009 21:27
par langa68
Merci, mais n'y a-t' il pas de possibilité avec ma version?

Re: Listes Chainées

Publié : lun. 12/oct./2009 21:30
par Anonyme
tu as quelle version exactement , la 4.2 ?
Télécharge la 4.40 b5 , tu auras les maps & co

Re: Listes Chainées

Publié : lun. 12/oct./2009 21:53
par langa68
merci

Re: Listes Chainées

Publié : mar. 13/oct./2009 8:42
par Anonyme
Ouais...
ça pue l'utilisateur Pirate....

Image

Re: Listes Chainées

Publié : mar. 13/oct./2009 9:01
par TazNormand
Pas Forcément Cpl.Bator, mais j'avoue que j'ai eu la même idée, mais laissons lui le bénéfice du doute (présomption d'innocence), quand je me suis inscrit sur le forum, j'avais aussi une version pirate, puis j'ai laissé un peu de côté PB, et je suis revenu, mais avec une version officielle.

A noter qu'on peut de nouveau payer sa licence avec PayPal (vu sur la page de téléchargement avec votre compte, en bas à droite)

Re: Listes Chainées

Publié : mar. 13/oct./2009 11:49
par langa68
Ce n'est pas une version pirate. C'est la version 4.02.

Re: Listes Chainées

Publié : mar. 13/oct./2009 11:51
par Anonyme
et pourquoi tu n'a pas la dernière version ? 8O

Re: Listes Chainées

Publié : mar. 13/oct./2009 11:51
par langa68
PS au message précédant.
Si vous n'avez pas envie d'aider un débutant, dites le clairement. :twisted: :twisted: :twisted: