probleme avec ClearList

Sujets variés concernant le développement en PureBasic
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

probleme avec ClearList

Message par bernard13 »

bonjour

j'ai repris un code que j'avais ecris en 3.94
quand je charge ce code dans la version 4 beta 3

j'ai une erreur avec ClearList(Tour())
il marque que que ma variable n'est pas une fonction ,array or linked list *

pourtant avec la 3.94 ce code marche tres bien
qui peux m'aider a le corriger pour la version 4.0 beta3
svp merci

Code : Tout sélectionner

Gestion de mon repertoire de closeup version 1 
;ecris par Jbernard -2005 



; defintion des constantes les fenetres 
Enumeration 
  #Fenetre_main 
  #fenetre_ajouter 
  #fenetre_voirl 
EndEnumeration 

;les gadgets 
Enumeration 
  #liste 
  #bouton_mise 
  #bouton_search 
  #bouton_voir 
  #cadre_0 
  #nom_tour 
  #String_nom 
  #text_categorie 
  #categorie 
  #text_matos 
  #String_matos 
  #bouton_ajoute 
  #bouton_annule 
  #cadre_1 
  #listvoir 
EndEnumeration 

;les menus 
Enumeration 
  #menu_nouveau 
  #menu_charger 
  #menu_sauver 
  #menu_quitter 
  #menu_creation 
  #menu_editer 
  #menu_effacer 
  #menu_ajouter 
  #menu_editer2 
  #menu_effacer2 
  #menu_about 
EndEnumeration 

;les fonts 
Enumeration 
  #font1 
  #font2 
  #font3 
EndEnumeration 

;les statusbar 
Enumeration 
  #statusbar 
EndEnumeration 

;chargenent des fonts 
LoadFont(#font1,"Courrier",9,#PB_Font_Bold) 
LoadFont(#font2,"Courrier",11,#PB_Font_Bold) 
LoadFont(#font3,"Courrier",12,#PB_Font_Bold) 

;creation d'un element 
Structure liste 
  Nom.s 
  Categorie.s 
  Matos.s 
EndStructure 
  
NewList Tour.liste() 

Procedure.b effacer_liste() 
  ClearList(Tour())   
  ProcedureReturn l 
EndProcedure 

Procedure.b ajoute_tour() 
  If AddElement(tour()) 
    Tour()\Nom=GetGadgetText(#String_nom) 
    Tour()\Categorie=GetGadgetText(#categorie) 
    Tour()\Matos=GetGadgetText(#String_matos) 
    AddGadgetItem(#liste,-1,tour()\Nom+Chr(10)+tour()\Categorie+Chr(10)+tour()\Matos) 
  EndIf 
  ProcedureReturn l 
EndProcedure 

;les procedures des fenetres 

Procedure main() 
  
  If OpenWindow(#Fenetre_main,0,0,980,720,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered,"Gestion de mon repertoire de magie ") 
    
   
    
    If CreateMenu(0,WindowID(#Fenetre_main)) 
      MenuTitle("Fichier ") 
      MenuItem(#menu_nouveau,"Crée une nouvelle liste ") 
      MenuBar() 
      MenuItem(#menu_charger,"Charge une liste ") 
      MenuItem(#menu_sauver,"Sauvegarde une liste ") 
      MenuBar() 
      MenuItem(#menu_quitter,"Quitter ") 
      MenuTitle(" Gestion des tours") 
      MenuItem(#menu_creation,"Ajouter un nouveau tour à la liste ") 
      MenuItem(#menu_editer,"Editer un tour de la liste  ") 
      MenuItem(#menu_effacer,"Effacer un tour de la liste ") 
      MenuTitle("Creation du repertoire ") 
      MenuItem(#menu_ajouter,"Ajoute un tour dans le repertoire") 
      MenuItem(#menu_editer2,"Editer le repertoire ") 
      MenuItem(#menu_effacer2,"Effacer un tour du repertoire") 
      MenuTitle("Aide") 
      MenuItem(#menu_about,"About") 
    EndIf 
    
    If CreateGadgetList(WindowID(#Fenetre_main)) 
      
      ListIconGadget(#liste,20,50,940,620,"Nom du tour : ",360,#PB_ListIcon_CheckBoxes|#PB_ListIcon_GridLines) 
      AddGadgetColumn(#liste,1,"Categorie :",175) 
      AddGadgetColumn(#liste,2,"Materiel :",400) 
      ButtonGadget(#bouton_mise,25,10,130,30,"Mise à jour ") 
      ButtonGadget(#bouton_search,190,10,130,30,"Recherche ") 
      ButtonGadget(#bouton_voir,355,10,130,30,"Voir la liste en cours ") 
      
      SetGadgetFont(#liste,UseFont(#font3)) 
      
      GadgetToolTip(#bouton_search ,"Recherche un tour dans la liste ") 
      GadgetToolTip(#bouton_mise,"Mise à jour de la liste ") 
      GadgetToolTip(#bouton_voir," voir toute la liste ") 
      
     
      
    EndIf 
    
    hStatusBar = CreateStatusBar(#statusbar, WindowID(#Fenetre_main)) 
    If hStatusBar 
      SendMessage_(hStatusBar, #WM_SETFONT, UseFont(#font2), #False) 
      AddStatusBarField(190) 
      AddStatusBarField(50) 
      StatusBarText(#statusbar, 0, "Nombre de tours :",#PB_StatusBar_Center|#PB_StatusBar_Raised) 
      StatusBarText(#statusbar,1,Str(CountGadgetItems(#liste)))      
    EndIf 
    
  EndIf 
  
EndProcedure 

Procedure ajouter_liste() 
  
  If OpenWindow(#fenetre_ajouter,0,0,640,480,#PB_Window_TitleBar|#PB_Window_ScreenCentered,"Ajouter un nouveau tour à la liste ") 
    
    
    
    If CreateGadgetList(WindowID(#fenetre_ajouter)) 
      
      Frame3DGadget(#cadre_0,15,15,610,445,"") 
      TextGadget(#nom_tour,230,50,180,30,"Nom de la routine : ",#PB_Text_Center) 
      StringGadget(#String_nom,180,80,270,25,"") 
      TextGadget(#text_categorie,250,150,130,30,"Categorie :",#PB_Text_Center) 
      ComboBoxGadget(#categorie,260,180,100,100) 
      AddGadgetItem(#categorie,-1,"Carte ") 
      AddGadgetItem(#categorie,-1,"Corde ") 
      AddGadgetItem(#categorie,-1,"Divers ") 
      AddGadgetItem(#categorie,-1,"Feu ") 
      AddGadgetItem(#categorie,-1,"Foulard ") 
      AddGadgetItem(#categorie,-1,"Mentalisme ") 
      AddGadgetItem(#categorie,-1,"Piece ") 
      TextGadget(#text_matos,225,250,185,30,"Materiel pour la routine :",#PB_Text_Center) 
      StringGadget(#String_matos,180,280,270,25,"") 
      ButtonGadget(#bouton_ajoute,80,390,230,30,"Ajouter un nouveau tour ") 
      ButtonGadget(#bouton_annule,420,390,130,30,"Annuler ") 
      
      SetGadgetFont(#nom_tour,UseFont(#font3)) 
      SetGadgetFont(#String_nom,UseFont(#font2)) 
      SetGadgetFont(#text_categorie,UseFont(#font3)) 
      SetGadgetFont(#text_matos,UseFont(#font3)) 
      SetGadgetFont(#String_matos,UseFont(#font3)) 
      SetGadgetFont(#bouton_ajoute,UseFont(#font3)) 
      SetGadgetFont(#bouton_annule,UseFont(#font3)) 
      SetGadgetFont(#categorie,UseFont(#font1)) 
      
      
      
    EndIf 
    
  EndIf 
  
  Repeat 
    
    Select WaitWindowEvent() 
      Case #PB_Event_Gadget 
        Select EventGadgetID() 
          Case #bouton_ajoute 
            ajoute_tour() 
            StatusBarText(#statusbar,1,Str(CountGadgetItems(#liste))) 
            Break 
          Case #bouton_annule 
            Break 
        EndSelect 
    EndSelect 
    
  ForEver 
  
  CloseWindow(#fenetre_ajouter) 
  UseWindow(#Fenetre_main) 
  
EndProcedure 

Procedure vueliste() 
  
  If OpenWindow(#fenetre_voirl,0,0,380,280,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Vue de la liste des tours en cours ") 
    If CreateGadgetList(WindowID(#fenetre_voirl)) 
      Frame3DGadget(#cadre_1,10,5,275,265,"") 
      ListViewGadget(#listvoir,20,20,250,240) 
      
      ;############################### 
      
      ForEach tour() 
        AddGadgetItem(#listvoir,-1,tour()\Nom) 
      Next 
      
      ;############################### 
      
    EndIf 
  EndIf 
  
  Repeat 
    Select WaitWindowEvent() 
      Case #PB_Event_CloseWindow:Break 
    EndSelect 
  ForEver 
  
  CloseWindow(#fenetre_voirl) 
  UseWindow(#Fenetre_main) 
  
EndProcedure 

;Boucle principale du programme  

main() 

Repeat 
  
  Select WaitWindowEvent() 
    
    Case #PB_Event_Menu 
      Select EventMenuID() 
        Case #menu_creation:ajouter_liste() 
      EndSelect 
      
    Case #PB_Event_Gadget 
      Select EventGadgetID() 
        Case #bouton_voir:vueliste() 
      EndSelect 
      
    Case #PB_Event_CloseWindow 
      Break 
      
  EndSelect 
  
ForEver 

End
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

C'est tout simplement parce que les listes chainées ne sont plus systématiquement globaux, il faut maintenant les déclarer pour cela comme tu le fais pour les autres variables.

Donc déclare ta NewList avec Global et ça devrait bien se passer.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci Nico
donc il faut declarer les listes chainées avant .
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

je rencontre un autre probleme

il me marque :

Structure no found :liste
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Pleins de trucs ont changés avec la V4, on va pas les faire tous 1 par 1, lit le fichier readme.html.

Je sais que tu n'aimes pas l'anglais, alors dans ce cas attends la sortie officielle avec la doc qui va bien.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

peux tu me dire ce qui à changer par rapport a mon code

svp
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ben c'est simple, tu cliques sur le bouton compiler/déboguer et tu regardes là où PB t'indique l'erreur.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

il marque a chaque fois cette erreur

Structure no found :liste
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

J'ai pas ce problème, une fois tous les Use quelue chose supprimés et bien remplacés, j'ai plus aucun prolème moi.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

explique mo svp gansta93
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

j'ai reecris le code et ca marche
Répondre