ordre alphabetique

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

ordre alphabetique

Message par venom »

bonsoir tout le monde j'ai un petit souci :? :

je suis en train de cree un logiciel qui me permet d'ecrir et d'enregister une liste de film pour savoir quel film j'ai et quel film j'ai pas.la je suis arriver a la phase ou je met ma liste dans l'ordre alphabetique donc j'ai consulter le fichier aide de pure basic mais j'ai un peut de mal a le comprendre. voici pour moi le code que je pense me concerne:

Code : Tout sélectionner

SortArray(ArrayName(), Options [, Debut, Fin]) 
le tableau spécifié selon les options souhaitées. Le tableau peut être de l'un des types suivants : byte, word, long, string. Une plage Debut, Fin optionnelle peut être demandée.

Les options peuvent prendre l'une des valeurs suivantes:

0: Trie le tableau en ordre ascendant (les plus petites valeurs en tête)
1: Trie le tableau en ordre descendant (les plus grandes valeurs en tête)
2: Trie un tableau de chaines de caractères en ne tenant pas compte de la casse (a=A, b=B etc..) et dans l'ordre ascendant
3: Trie un tableau de chaines de caractères en ne tenant pas compte de la casse (a=A, b=B etc..) et dans l'ordre descendant

Note: Si un tableau n'est pas totalement plein les éléments vides seront placés en tête dans l'ordre ascendant et en fin dans l'ordre descendant.
donc a ce que j'ai comprie dans l'aide je l'ai ecrit comme sa:

Code : Tout sélectionner

SortArray(ArrayName(), 3 [, a=A, z=Z])
mais comme d'abitude je n'ai pas de chance et j'ai beau lire et relire l'aide je ne voie pas comment on ecrit le code. donc si quelquin serai repondre a mon probleme ou me donner une adresse ou le probleme a deja etait poser merci de me le faire part :D

au revoir et a bientot :P

pour plus d'aide voici mon code il n'est pas encore fini loin de la :D :wink:

Code : Tout sélectionner

Enumeration 
  #Window_0 
  #Window_1 
  #window_2 
EndEnumeration 


Enumeration 
  #ListIcon_0 
  #Button_Ajoutet 
  #Button_Effacee 
  #Button_Fiche 
  
  #Text_Titre 
  #Frame3D_0 
  
  #Frame3D_ajoute 
  #Text_NomS 
  #String_NomS 
  #Text_NomT 
  #editor_NomT 
  #Text_date 
  #String_date 
  #Text_Heure 
  #String_heure 
  #Button_ajoute 
  #button_ajou
#Button_recherche
  #editor_NomA 
EndEnumeration 


Enumeration 
  #menu_Charger 
  #menu_Save 
  #menu_Quitter 
  #menu_Vider
  #menu_ranger  
EndEnumeration 

Enumeration 
  #menu_Annuler   
EndEnumeration 

Structure Tour_struct 
  Nom.s 
  ListeT.s 
  Matos.s 
  Date.s 
  Heure.s 
  Lieux.s 
EndStructure 

NewList Items.Tour_struct() 

Procedure.b item_clear() 
  ClearList(Items()) 
  ProcedureReturn 1 
EndProcedure 

Procedure.b item_add() 
  If AddElement(Items()) 
    Items()\Nom = GetGadgetText(#String_NomS) 
    Items()\ListeT = GetGadgetText(#Editor_NomT) 

    Items()\date = GetGadgetText(#String_Date) 
    Items()\Heure = GetGadgetText(#String_heure) 

    AddGadgetItem(#ListIcon_0, -1, Items()\Nom) 
  EndIf 

  If CountGadgetItems(#ListIcon_0) 
    DisableGadget(#Button_Fiche, 0) 
  EndIf 
  
  ProcedureReturn 1 
EndProcedure 


Procedure Empty() 
  Item_Clear() 
  ClearGadgetItemList(#ListIcon_0) 
EndProcedure 


Procedure.l Item_Load(fichier.s) 
  If OpenPreferences(fichier) 
    
    Repeat 
      i + 1 
      If PreferenceGroup("Item." + Str(i)) 
        AddElement(Items()) 
        Items()\Nom = ReadPreferenceString("titre du film", "") 
        Items()\ListeT = ReadPreferenceString("commentaire", "") 
        Items()\Date = ReadPreferenceString("note image", "") 
        Items()\heure = ReadPreferenceString("note son", "") 
      Else 
        Break 
      EndIf 
    ForEver 
    
    ClosePreferences() 
    ProcedureReturn i 
    
  EndIf 
EndProcedure 


Procedure.l Item_Save(fichier.s) 
  If CreatePreferences(fichier) 
    
    ForEach Items() 
      i + 1 
      PreferenceGroup("film." + Str(i)) 
      WritePreferenceString("titre du film", Items()\Nom) 
      WritePreferenceString("commentaire", Items()\ListeT)  
      WritePreferenceString("note image", Items()\Date) 
      WritePreferenceString("note son", Items()\heure)  
    Next 
    
    ClosePreferences() 
    ProcedureReturn i 
    
  EndIf 
EndProcedure 


Procedure Open(append.b) 

  fichier.s = OpenFileRequester("Ouvrir", "fichier.ini", "ini | *.ini", 0) 
  
  
  If fichier <> "" 
    
    If append 
      ClearGadgetItemList(#ListIcon_0) 
    Else 
      Item_Clear() 
    EndIf 
    
    Item_Load(fichier) 
    ClearGadgetItemList(#listIcon_0) 
    ForEach Items() 
      AddGadgetItem(#listIcon_0, -1, Items()\Nom) 
      Items()\Nom 
    Next 
  EndIf 

  If CountGadgetItems(#ListIcon_0) 
    DisableGadget(#Button_Fiche, 0) 
  EndIf 
  
EndProcedure 


Procedure SaveAs() 

  fichier.s = SaveFileRequester("Enregistrer sous", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\liste de film", "*.txt|*.txt", 0)

  
  If fichier <> "" 
    Item_Save(fichier) 
  EndIf 
  
EndProcedure 


Procedure RemoveGadget() 
  i = 0 
  If GetGadgetItemState(#ListIcon_0, i) & #PB_ListIcon_Checked 
    RemoveGadgetItem(#ListIcon_0, i) 
  EndIf 

  If CountGadgetItems(#ListIcon_0) = 0 
    DisableGadget(#Button_Fiche, 1) 
  EndIf 
  
EndProcedure 


Procedure effacer() 
  SetGadgetText(#String_NomS, "") 
  SetGadgetText(#editor_NomT, "") 
  SetGadgetText(#String_Date, "") 
  SetGadgetText(#String_Heure, "") 

  ActivateGadget(#String_NomS) 
EndProcedure 

Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 18, 13, 750, 530, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar|#PB_Window_ScreenCentered, "liste de films ") 
    
    If CreateMenu(0, WindowID()) 
      MenuTitle( "Fichier")       
      MenuItem(#menu_Charger, "Charger la  liste") 
      MenuItem(#menu_Save, "Sauvegarder la liste") 
      MenuItem(#menu_Quitter, "Quitter ") 
      MenuTitle("Edition") 
      MenuItem(#menu_ranger, " ranger par ordre ")

    EndIf 

    
    If CreateGadgetList(WindowID()) 
      
      
      ListIconGadget(#ListIcon_0, 23, 50, 700, 410, "Titre du film ", 696, #PB_ListIcon_CheckBoxes | #PB_ListIcon_GridLines)  
      ButtonGadget(#Button_Ajoutet, 20, 0, 190, 50, "AJOUTER FILM") 
      GadgetToolTip(#Button_Ajoutet, "Ajoute un titre a la liste ")  
      ButtonGadget(#Button_Effacee, 270, 0, 190, 50, "EFFACER DE LA LISTE") 
      GadgetToolTip(#Button_Effacee, "Efface un titre de la liste en cochant la case  ")  
      ButtonGadget(#Button_Fiche, 520, 0, 190, 50, "VOIR LA FICHE ") 
      GadgetToolTip(#Button_Fiche, "Voir la fiche en cochant la case ") 
      DisableGadget(#Button_Fiche, 1) 
      EditorGadget(#editor_NomA, 250, 475, 400, 20, "")
      ButtonGadget(#Button_recherche, 70, 470, 150, 30, "RECHERCHE")

    EndIf 
  EndIf 
EndProcedure 


Procedure Open_Window_1() 
  If OpenWindow(#Window_1, 255, 7, 678, 600, #PB_Window_TitleBar | #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Creation d'une nouvelle fiche ") 
    If CreateMenu(1, WindowID()) 
      MenuTitle( "annuler le fiche cree") 
      MenuItem(#menu_Annuler, " Annuler la fiche ") 
    EndIf 
    If CreateGadgetList(WindowID()) 
      Frame3DGadget(#Frame3D_ajoute, 10, 10, 660, 710, "") 
      
      TextGadget(#Text_NomS, 20, 40, 150, 30, "titre du film :", #PB_Text_Center)  
      StringGadget(#String_NomS, 180, 40, 480, 28, "")
      
      TextGadget(#Text_NomT, 20, 110, 150, 30, "commentaire : ", #PB_Text_Center)  
      EditorGadget(#editor_NomT, 180, 110, 480, 150, "")
      
      TextGadget(#Text_date, 30, 400, 110, 30, "note image :", #PB_Text_Center) 
      StringGadget(#String_date, 140, 400, 120, 30, "")
        
      TextGadget(#Text_Heure, 360, 400, 110, 30, "note son :", #PB_Text_Center) 
      StringGadget(#String_heure, 480, 400, 130, 30, "") 
      
      ButtonGadget(#Button_ajoute, 200, 485, 290, 50, "Ajouter le film a la liste  ") 
      GadgetToolTip(#Button_ajoute, "Ajoute une prestation a la liste ") 
      SetGadgetFont(#Button_ajoute, FontID2) 
      
      Repeat 
        
        Event = WaitWindowEvent() 
        
        Select Event 
            
            
          Case #PB_EventMenu 
            Select EventMenuID() 
              Case #menu_Annuler : Fermer_Window_1 = 1 
                
            EndSelect 
            
          Case #PB_EventGadget 
            GadgetID = EventGadgetID() 
            If GadgetID = #Button_Ajoute 
              item_add() 
              Fermer_Window_1 = 1 
            EndIf 
            
        EndSelect 
        
      Until Fermer_Window_1 = 1 
      
      CloseWindow(#Window_1) 
      While WindowEvent() : Wend 
    EndIf 
    
  EndIf 
EndProcedure 


Procedure Open_Window_2(Index) 
  If OpenWindow(#window_2, 255, 7, 678, 600,#PB_Window_TitleBar | #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Fiche du film  ") 
    If CreateGadgetList(WindowID()) 
      Frame3DGadget(#Frame3D_ajoute, 10, 10, 660, 710, "") 
      
      TextGadget(#Text_NomS, 20, 40, 150, 30, "titre du film :", #PB_Text_Center) 
      StringGadget(#String_NomS, 180, 40, 480, 28, "")  
      
      TextGadget(#Text_NomT, 20, 110, 150, 30, "commentaire : ", #PB_Text_Center) 
      EditorGadget(#editor_NomT, 180, 110, 480, 100, "") 

      TextGadget(#Text_date, 30, 460, 110, 30, "note de l'image :", #PB_Text_Center) 
      StringGadget(#String_date, 140, 460, 120, 30, "") 
 
      TextGadget(#Text_Heure, 360, 460, 110, 20, "note du son :", #PB_Text_Center)  
      StringGadget(#String_heure, 480, 460, 130, 25, "") 
     
      ButtonGadget(#Button_ajoute, 200, 520, 290, 50, " Quitter la fiche   ")  
      SetGadgetFont(#Button_ajoute, FontID2) 
      
      SelectElement(Items(), Index) 
      SetGadgetText(#String_NomS, Items()\Nom) 
      SetGadgetText(#Editor_Nomt, Items()\ListeT) 
      SetGadgetText(#String_date, Items()\Date) 
      SetGadgetText(#String_heure, Items()\Heure) 

      
      Repeat 
        
        Event = WaitWindowEvent() 
        
        Select Event 
          Case #PB_EventCloseWindow 
            Fermer_Window_2 = 1 
            
          Case #PB_EventGadget 
            GadgetID = EventGadgetID() 
            If GadgetID = #Button_ajoute 
              Fermer_Window_2 = 1 
            EndIf 
        EndSelect 
        
      Until Fermer_Window_2 = 1 
      
      CloseWindow(#window_2) 
    EndIf 
  EndIf 
EndProcedure 

Open_Window_0() 

Repeat 
  
  Event = WaitWindowEvent() 
  Select Event 
    Case #PB_EventMenu 
      Select EventMenuID() 
          
          Case#menu_Charger 

          
          Case#menu_save 
          saveas() 
          
          Case#menu_ranger 
          Empty() 
          
          Case#menu_Quitter 
          fermer_window_0 = 1 
          
      EndSelect 
      
      
    Case #PB_EventGadget 
      Select EventGadgetID() 
          
        Case #Button_ajoutet 
          open_window_1() 
          
          Case#button_Fiche 
          i = 0 
          
          If CountGadgetItems(#ListIcon_0) 
            For i = 0 To CountGadgetItems(#ListIcon_0) 
              If GetGadgetItemState(#ListIcon_0, i) & #PB_ListIcon_Checked = #PB_ListIcon_Checked 
                Open_Window_2(i) 
                Break 
              EndIf 
            Next i 
          EndIf 
          
        Case #Button_Effacee 
          RemoveGadget() 
          
      EndSelect 
      
    Case #PB_EventCloseWindow 
      fermer_window_0 = 1 
      
  EndSelect 
  
Until fermer_window_0 = 1 

End
@++
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

donc a ce que j'ai comprie dans l'aide je l'ai ecrit comme sa:

Code:
SortArray(ArrayName(), 3 [, a=A, z=Z])
Quand, dans l'aide, les arguments sont écrits entre crochets, ça veut dire qu'ils sont optionnels, ce n'est pas à copier tel quel.

Dans ton cas, je suppose que ça donnera:

Code : Tout sélectionner

SortArray(ArrayName(),3)
Les 2 autres arguments servent si on veut trier seulement une partie du tableau.

Voilà, j'espère que j'ai bien compris ta question :D
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'avais commencé une explication puis finalement j'ai laissé tombé:

-Il y a des exemples fournit avec Pure
-Il y a bien d'autres exemples mais faut se donner la peine de chercher
-Rien ne t'empêche de faire des essais et de comprendre cette fonction
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

:( sa marche pas j'ai la version demo il me dit que c'est invalide version demo :( chui degouter
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

trop de ligne de code, non ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

je n'ai jamais utilisé cette commande, mais elle trie des tableaux , et toi apparemment ,tu utilises des listes chainées ?
il existe des exemples de tris d'une liste chainée , ici peut-être ? en tout cas dans codearchiv.
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

comment ca Le Soldat Inconnu tu trouve qui a des lignes qui ne servent a rien quoi que tu a peut etre raison j'ai essayer tellement de chose pour ce code que j'ai du oublier des lignes :lol: fodra que je verifie sa pour la reponse de filperj chez moi sa marche pas j'ai oublier de preciser que j'ai que la version demo pour l'instant :roll: :D
merci encore de votres aide :wink: mais t'inquiette pas nico c'est pas par ce que j'ai poster mon sujet que je reste les bras croisees a atendre une reponse de votres pars c'est sur je demande a vous car vous avez plus d'esperience que moi mais ne vous inquietter pas je continue a chercher dans mon coin :wink: :D

@++
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ce que le soldat voulait dire , c'est que la version démo est limitée à 200 lignes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Exactement Comtois :wink:

mais SortArray ne marche pas avec les listes chainés, donc forcément, ha va pas marché :lol: ça ne marche pas non plus avec les liste à base de structure
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

HA!! ok excuser moi :oops: j'aver pas compris sa pourtant mon logiciel fonctionne!. vous croyer que c'est a cause de sa alors que je peut pas m'arranger pour pouvoir ranger dans l'ordre alphabetique?
bon bin y fodra que je voie pour m'acheter la version normal alors :D
merci de m'avoir repondue a vous tous

@++
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

tiens, j'ai fais ça vite fait

ça permet de trié une liste chainée, compatible avec la démo

Code : Tout sélectionner

NewList Truc.POINT()

; On rempli avec des valeurs bidons
For n = 1 To 5
  AddElement(Truc())
  Truc()\x = Random(20)
  Truc()\y = Random(20)
  Debug Str(Truc()\x) + ", " + Str(Truc()\y)
Next

; Ici, on trie la liste chainée
; complètement indéendant du reste, il suffit de préciser la liste chainée
Debug "Triage"
Nb = CountList(Truc()) - 1 ; Nombre d'élément, en partant de 0 d'ou le -1
Dim ListeTrie.s(Nb)
ResetList(Truc())
For n = 0 To Nb
  NextElement(Truc())
  ListeTrie(n) = Str(Truc()\x) + "§" + Str(Truc()\y) ; on assemble toute les composante de la liste chainée sous formes de string dans un tableau
  ; ici on trie d'abord sur les var x puis sur les y
  ; mais si on écrit les y d'abord dans le string
  ; on trie d'abord sur les var y puis sur les x
Next
SortArray(ListeTrie(), 2) ; on trie le tableau
ResetList(Truc())
For n = 0 To Nb
  NextElement(Truc())
  Truc()\x = Val(StringField(ListeTrie(n), 1, "§")) ; on recopie le tableau trié dans la liste chainée
  Truc()\y = Val(StringField(ListeTrie(n), 2, "§"))
  Debug Str(Truc()\x) + ", " + Str(Truc()\y) ; on affiche le résultat
Next
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre