Votre avis sur mon code

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
titraxx
Messages : 10
Inscription : mar. 22/mars/2011 19:25

Votre avis sur mon code

Message par titraxx »

Bonsoir !

Je viens de finir mon programme. Je l'ai fait afin d'appliquer concrètement ce que j'ai appris jusque là et pour m'entrainer un peu. C'est un programme assez simple qui créer un fichier de la taille demandée. J'aimerais que vous me donniez votre avis et que vous me disiez ce qui peut être améliorer au niveau de la syntaxe, de l'organisation… Je suis sûr qu'il peut être amélioré.
Je pense que certain reviendrons aussi sur la technique que j'utilise pour créer le fichier (à savoir le remplir de 0 jusqu'à la taille souhaitée). Je réalise que ce n'est pas optimisé mais pour l'instant j'ai appliqué ce que j'ai appris jusque là.
Si vous avez des conseils d'une part pour la rédaction et l'organisation du programme et d'autre part une autre technique que celle que j'utilise pour créer un fichier d'une taille demandée.

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration


;- Gadget Constants
;
Enumeration
  #String_0
  #Button_0
  #Combo_0
  #Text_0
EndEnumeration

#octet = 1
unite=#octet
Procedure Open_Window_0() ;création de la fenêtre
  If OpenWindow(#Window_0, 354, 79, 600, 300, "Créateur de fichier",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  
        StringGadget(#String_0, 30, 20, 470, 30, "0",#PB_String_Numeric)
        ButtonGadget(#Button_0, 220, 140, 90, 40, "Créer le fichier")
       If ComboBoxGadget(#Combo_0, 520, 25, 60, 20)
         AddGadgetItem(#Combo_0,0,"o")
         AddGadgetItem(#Combo_0, 1,"Ko")
         AddGadgetItem(#Combo_0, 2, "Mo")
         SetGadgetState(#Combo_0, 0)
       EndIf
        TextGadget(#Text_0, 530, 90, 60, 20, "")
        
   EndIf

    EndProcedure
    
    Open_Window_0()
    Repeat  ;boucle de l'évènement
      event = WaitWindowEvent()
      
      If event = #PB_Event_Gadget ; si un événement est détecté
        gadget= EventGadget() ;intercepter de quel gadget cela provient
      EndIf 
      
      
      If gadget = #Combo_0 
        combobox=GetGadgetState(#Combo_0)
        Select combobox ; changement de l'unité en fonction du choix
          Case 1
            unite=Pow(2,10)
          Case  2
            unite=Pow(2,20)
        EndSelect
      EndIf
      
      If GetGadgetText(#String_0) <> "" ; si le champs n'est pas vide
        
        If gadget = #Button_0 
          If CreateFile(0, "test") ; on créer le fichier
            For i= 0 To (unite*entree) ; on le rempli jusque la taille demandée
              WriteString(0, "0")
              
            Next
          EndIf    
        EndIf
        
      ElseIf GetGadgetText(#String_0) = "" And gadget = #Button_0 ;si on appuie sur Créer alors que le champs est vide, un message d'erreur s'affiche
        MessageRequester("Attention !", "Veuillez rentrer une valeur pour la taille du fichier")
        Repeat
          Event2 = WaitWindowEvent()
          
          If Event2 = #PB_Event_CloseWindow  ; si l'utilisateur clique sur OK la fenêtre se ferme (copié lâchement de la documentation)
            Quit = 1
          EndIf
          
        Until Quit = 1
        
      EndIf 
      
    Until event=#PB_Event_CloseWindow
    End

Merci.

TitraxX
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Votre avis sur mon code

Message par Backup »

...........
Dernière modification par Backup le sam. 01/oct./2011 10:15, modifié 1 fois.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Votre avis sur mon code

Message par MLD »

Salut titraxx

c'est ce que tu souhaite

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration


;- Gadget Constants
;
Enumeration
  #String_0
  #Button_0
  #Combo_0
  #Text_0
EndEnumeration

Procedure Open_Window_0() ;création de la fenêtre
   OpenWindow(#Window_0, 354, 79, 600, 300, "Créateur de fichier",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
        StringGadget(#String_0, 30, 20, 470, 30, "0",#PB_String_Numeric)
        ButtonGadget(#Button_0, 220, 140, 90, 40, "Créer le fichier")
        ComboBoxGadget(#Combo_0, 520, 25, 60, 20)
        AddGadgetItem(#Combo_0,0,"o")
        AddGadgetItem(#Combo_0, 1,"Ko")
        AddGadgetItem(#Combo_0, 2, "Mo")
        TextGadget(#Text_0, 530, 90, 60, 20, "")
EndProcedure
    
    Open_Window_0()
    Repeat  ;boucle de l'évènement
      event = WaitWindowEvent()
      Select EventGadget()
       Case #Button_0 
           Select EventType()
            Case #PB_EventType_LeftClick 
             If GetGadgetState(#Combo_0) = 1
              unite = 1000 
             EndIf
             If GetGadgetState(#Combo_0) = 2
              unite = 1000000 
             EndIf
             If GetGadgetText(#String_0) <> "" ; si le champs n'est pas vide
              CreateFile(0, "test") ; on créer le fichier
              WriteString(0, Space(unite* Val(GetGadgetText(#String_0))))
             Else  ;si on appuie sur Créer alors que le champs est vide, un message d'erreur s'affiche
              MessageRequester("Attention !", "Veuillez rentrer une valeur pour la taille du fichier")
             EndIf
           EndSelect  
       EndSelect 
    Until event=#PB_Event_CloseWindow
    End
Si tu souhaite vraiment des octets koctets = 1024 octets
Dans ton code tu utilise trop de conditionnels If/Endif
Il n'est pas souhaitable d'avoir une boucle incluse dans la boucle principal (Source de gros problèmes)
Attention le 0(zéro) n'est pas une valeur nulle, de même q'un espace n'est pas rien : j'ai remplis le fichier avec des espaces .
Il n'était pas utile de tester le comboBox en permanence dans la boucle.
Un bon conseil regardes les tutoriaux, et utilise le bouton recherche, pour voir comment les autres ont faits
Mais c'est bien, continu tu es sur la bonne voie. Tu vérras PB c'est super. Si tu veux aller plus loin et utiliser les API Window il faudrat que tu achètes une licence.
Michel
titraxx
Messages : 10
Inscription : mar. 22/mars/2011 19:25

Re: Votre avis sur mon code

Message par titraxx »

Merci pour vos avis.
Je vais travailler sur mon code et continuer à apprendre :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Votre avis sur mon code

Message par Chris »

Autre chose:

Pense à toujours fermer les fichiers que tu crée.
Même si PB le fait pour toi quand le programme se termine, autant prendre de bonnes habitudes et ça évite qu'un fichier reste ouvert pendant toute la durée d'exécution du programme qui le crée. (avec tous les risques de perte de données en cas de plantage)

Code : Tout sélectionner

        
        If gadget = #Button_0
          If CreateFile(0, "test") ; on créer le fichier
            For i= 0 To (unite*entree) ; on le rempli jusque la taille demandée
              WriteString(0, "0")
              
            Next
            CloseFile(0) <===========
          EndIf   
        EndIf
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Votre avis sur mon code

Message par MLD »

Yes Chris. :lol:
Oublis de ma part :oops: :oops:
Bonne journée
Michel
Répondre