Page 1 sur 2

Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 14:00
par guismoman33
Je met ce sujet ici:

Oui je débute, j'ai beaucoup programmé en php, mais la j'arrive sur un langage, que je ne connaît absolument pas, et qui me paraît énormement dure, alors qu'il paraît que c'est un langage simple.

Regardez je viens de commencer un mini programme, qui bien sur, ne marche pas, un programme avec des bases :

Je fais mes petits test.
Le but du programme : une fenetre1 demandant un login et un mot de passe. si le login et le mot de passe est le bon ouvrir une fenetre2 et fermeture de la fenetre2.


Code:

Code : Tout sélectionner

Enumeration
  #Window_0
  #Window_1
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #String_1
EndEnumeration


  Procedure error(text)
       OpenConsole()
       PrintN(text)
       Delay(5000)
       CloseConsole()
  EndProcedure


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 467, 379, 407, 216, "Connexion",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 120, 120, 160, 40, "Connexion", #PB_String_Password  )
      StringGadget(#String_0, 120, 30, 160, 30, "Identifiant")
      StringGadget(#String_1, 120, 70, 160, 30, "Motdepasse")
    EndIf
  EndIf
EndProcedure

If EventGadget()= #Button_0
  If identifiant="vincent" 
    If motdepasse="vince"
       OpenWindow(#Window_1, 2, 2, 650, 650, "Programme",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    Else 
       error("MDP incorrect)
    EndIf
   Else
    error("Login incorrect")
   EndIf 
EndIf

C'est assez compliquez tous cela. Je suis sur que c'est simple mais quand on débute rien est simple.
Par contre expliquer moi bien s'il vous plait car je débute vraiment dans ce domaine...

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 14:54
par Le Soldat Inconnu
Ton programme ne fonctionne pas car tu ne lances pas la Procedure OpenWindow donc tu n'ouvres pas de fenêtre

Un exemple de ce que tu veux faire

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.40
;
; Explication du programme :
; Mot de passe

Enumeration
	#Fenetre_MdP
	#Fenetre_Suivante
	
	#Texte_Identifiant
	#Identifiant
	#Texte_Mdp
	#Mdp
	#Valider
EndEnumeration


; On demande le MdP
If OpenWindow(#Fenetre_MdP, 0, 0, 200, 110, "Login", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
	
	TextGadget(#Texte_Identifiant, 5, 5, 190, 15, "Identifiant :")
	StringGadget(#Identifiant, 5, 20, 190, 20, "")
	TextGadget(#Texte_Mdp, 5, 45, 190, 15, "Mot de passe :")
	StringGadget(#Mdp, 5, 60, 190, 20, "", #PB_String_Password)
	ButtonGadget(#Valider, 5, 85, 190, 20, "Valider")
	
	Repeat
		Event = WaitWindowEvent()
		
		Select Event
			Case #PB_Event_CloseWindow
				; On ferme la fenêtre
				End
				
			Case #PB_Event_Gadget
				Select EventGadget() ; Gadgets
					Case #Valider ; Si j'appuie sur le bouton valider
						If GetGadgetText(#Identifiant) = "Vincent" ; Je teste l'identifiant
							If GetGadgetText(#Mdp) = "Vince" ; Je teste le mot de passe
								MdP_OK = 1 ; mot de passe OK
							Else
								MessageRequester("Erreur", "Mot de passe incorrect")
							EndIf
						Else
							MessageRequester("Erreur", "Identifiant incorrect")
						EndIf
						
				EndSelect
		EndSelect
		
		
	Until MdP_OK ; On continue si le mdp est OK
	
EndIf



; Si le MdP est OK
If MdP_OK
	
	; Fenêtre suivante
	If OpenWindow(#Fenetre_Suivante, 0, 0, 300, 300, "La suite", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
		
		Repeat
			Event = WaitWindowEvent()
			
			Select Event
				Case #PB_Event_CloseWindow
					; On ferme la fenêtre
					End
					
				Case #PB_Event_Gadget
					Select EventGadget() ; Gadgets
							
					EndSelect
			EndSelect
			
		ForEver
		
	EndIf
	
	
EndIf





Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 14:57
par Atomo
Je te recommande vivement de lire ce livre numérique (en anglais) : http://www.purebasic.fr/english/viewtop ... 14&t=37059
Il t'explique à peu près tout ce qu'il y a à savoir sur PureBasic.

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 15:14
par guismoman33
Je ne sais pas lire l'anglais désolé mais merci pour les réponses

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 15:29
par guismoman33
Merci je comprend déja pas mal de chose d'un coup et j'adore lol

Voila j'ai une news questions.
Voila mon code de ma page principal :

Code : Tout sélectionner

Enumeration
   #Fenetre_Principal

EndEnumeration



If OpenWindow(#Fenetre_Principal, 0, 0, 800, 750, "Logiciel Vincent v1.0", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)


IncludeFile "login.pb"


EndIf
End
Comment avoir une grosse page principal (la ou j'aurai les menus comme imrpimez etc (mais ça on verra plus tard)) où nous allons incrémenter d'autre petite page?

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 16:48
par Atomo
Je n'ai pas compris ce que tu veux faire.

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 17:33
par Le Soldat Inconnu
Un peu comme Word ? Photoshop ou autre ?

Regarde MDIgadget()

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 18:11
par Robrock55
Pour le livre, il y a une traduction en cours sur le forum non ?

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 18:17
par venom
Robrock55 a écrit :Pour le livre, il y a une traduction en cours sur le forum non ?
Tout a fait Robrock55 je dirais même plus ici :wink:









@++

Re: Petit programme de débutant : ne marche pas sniff

Publié : jeu. 04/févr./2010 18:18
par Robrock55
Merci, moi qui étais en train de le chercher ;) Vais peut-etre contribuer :D

Re: Petit programme de débutant : ne marche pas sniff

Publié : ven. 05/févr./2010 9:49
par guismoman33
Oui en effet c'est avec la fonction MDI, j'ai test quelque petit truc mais ça ne marche pas comme je le voudrais.

Regarder mes deux programmes.

Code : Tout sélectionner

Enumeration
  #FenetrePrincipale = 0
  #FenetreFille = 1
  #FenetreFilles = 2
EndEnumeration
If OpenWindow(#FenetrePrincipale, 0, 0, 400, 300, "MDIGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)
    If CreateMenu(#FenetrePrincipale, WindowID(#FenetrePrincipale))
      MenuTitle("Index de menu 0")
        MenuItem(0, "Elément créé soi-même1")
        
      MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)
        AddGadgetItem(0, #FenetreFille, "Login")
         IncludeFile("login.pb")
          ; ajouter des gadgets ici...
      UseGadgetList(WindowID(#FenetrePrincipale)) ; retourne à la liste de gadgets de la fenêtre principale
    EndIf
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
End
Ca, j'aimerai que ce code soit le code pour programmer la fenetre principal...

Je réfléchi à avoir un code intermédiaire qui me dit quel fenetre ouvrir.

Et mon Deuxieme code pour le login de départ

Code : Tout sélectionner

Enumeration
   #Fenetre_MdP
   #Fenetre_Suivante
   
   
   #Texte_Identifiant
   #Identifiant
   #Texte_Mdp
   #Mdp
   #Valider
EndEnumeration


; On demande le MdP
   OpenWindow(#Fenetre_MdP, 0, 0, 200, 110, "Login", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
   
   TextGadget(#Texte_Identifiant, 5, 5, 190, 15, "Identifiant :")
   StringGadget(#Identifiant, 5, 20, 190, 20, "")
   TextGadget(#Texte_Mdp, 5, 45, 190, 15, "Mot de passe :")
   StringGadget(#Mdp, 5, 60, 190, 20, "", #PB_String_Password)
   ButtonGadget(#Valider, 5, 85, 190, 20, "Valider")
   
   Repeat
      Event = WaitWindowEvent()
      
      Select Event
         Case #PB_Event_CloseWindow
            ; On ferme la fenêtre
            End
            
         Case #PB_Event_Gadget
            Select EventGadget() ; Gadgets
               Case #Valider ; Si j'appuie sur le bouton valider
                  If GetGadgetText(#Identifiant) = "Vincent" ; Je teste l'identifiant
                     If GetGadgetText(#Mdp) = "Vince" ; Je teste le mot de passe
                        MdP_OK = 1 ; mot de passe OK
                     Else
                        MessageRequester("Erreur", "Mot de passe incorrect")
                     EndIf
                  Else
                     MessageRequester("Erreur", "Identifiant incorrect")
                  EndIf
                  
            EndSelect
      EndSelect
      
      
   Until MdP_OK ; On continue si le mdp est OK




; Si le MdP est OK
If MdP_OK
   
   ; Fenêtre suivante
   If OpenWindow(#Fenetre_Suivante, 0, 0, 300, 300, "La suite", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
      
      Repeat
         Event = WaitWindowEvent()
         
         Select Event
            Case #PB_Event_CloseWindow
               ; On ferme la fenêtre
               End
               
            Case #PB_Event_Gadget
               Select EventGadget() ; Gadgets
                     
               EndSelect
         EndSelect
         
      ForEver
      
   EndIf
   
   
EndIf
Dans un premier temps j'aimerai que la fenetre login peut apparaitre dans la fenetre principal. Dans un deuxieme temps je pense mettre un code intermediaire qui dit à tel ou tel page de s'ouvrir.

Gérer les includefile...


Qu'en penser vous...
MDI, est assez compliquer, il y a certaines choses sur purebasic qui sont assez compliquer quand meme.

Re: Petit programme de débutant : ne marche pas sniff

Publié : ven. 05/févr./2010 10:29
par TazNormand
Salut

Les includes, quelque soit l'endroit où tu les mets seront de toute façon TOUS inclus dans ton exécutable à la compilation.

C'est pas très "bon" de mettre des includes un peu partout dans le programme, il est conseillé de les mettre en début de programme.

Dans ton code, ta logique n'est pas correcte car tu ouvres une fenêtre login (qui devrait être une fenêtre MDI) avant la fenêtre principale.
Tu devrais plutôt :
1° Ouvrir la fenêtre principale
2° Faire apparaître dans la foulée le login
3° test du login : OK tu fermes la fenêtre login, tu "affiches" (active) les menus, KO = Message + "essaies encore"

voici un exemple :

Code : Tout sélectionner

Enumeration
		#Fenetre_MdP
		#Fenetre_Main
		
		
		#Texte_Identifiant
		#Identifiant
		#Texte_Mdp
		#Mdp
		#Valider
EndEnumeration


		If OpenWindow(#Fenetre_Main, 0, 0, 300, 300, "La suite", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
		  If CreateMenu(#Fenetre_Main, WindowID(#Fenetre_Main))
        MenuTitle("Fichier")
        MenuTitle("?")
          MenuItem(0, "A propos")
          MenuItem(1, "Elément menu")
        
        MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)
        AddGadgetItem(0, #Fenetre_MdP, "Login")
          ; ajouter des gadgets ici...
            TextGadget(#Texte_Identifiant, 5, 5, 190, 15, "Identifiant :")
		        StringGadget(#Identifiant, 5, 20, 190, 20, "")
		        TextGadget(#Texte_Mdp, 5, 45, 190, 15, "Mot de passe :")
		        StringGadget(#Mdp, 5, 60, 190, 20, "", #PB_String_Password)
		        ButtonGadget(#Valider, 5, 85, 190, 20, "Valider")
		        
        UseGadgetList(WindowID(#Fenetre_Main)) ; retourne à la liste de gadgets de la fenêtre principale
    EndIf
    
		Repeat
					Event = WaitWindowEvent()					
					EventWin=EventWindow()  ; Quelle fenêtre est cooncernée par l'évenement
					
					Select Event
						Case #PB_Event_CloseWindow
								; On ferme la fenêtre SI C'est la principale								
								If EventWin=#Fenetre_Main
								  End
								Else
								  ; Rien, on ne ferme pas la fenetre login tant que mot de passe pas OK
								EndIf								
						Case #PB_Event_Gadget
								Select EventGadget() ; Gadgets
									Case #Valider ; Si j'appuie sur le bouton valider
									  If GetGadgetText(#Identifiant) = "Vincent" ; Je teste l'identifiant
											If GetGadgetText(#Mdp) = "Vince" ; Je teste le mot de passe
												MdP_OK = 1 ; mot de passe OK
												CloseWindow(#Fenetre_MdP) ; Fermer la fenetre login
											Else
												MessageRequester("Erreur", "Mot de passe incorrect")
												SetGadgetText(#Identifiant,"")  ; Réinitialiser zone identifiant et mdp
												SetGadgetText(#Mdp,"")
											EndIf
									  Else
											MessageRequester("Erreur", "Identifiant incorrect")
											SetGadgetText(#Identifiant,"")  ; Réinitialiser zone identifiant et mdp
												SetGadgetText(#Mdp,"")
									  EndIf									
								EndSelect
					EndSelect
					
			ForEver
			
		EndIf
		
End		



Re: Petit programme de débutant : ne marche pas sniff

Publié : ven. 05/févr./2010 12:49
par Backup
...

Re: Petit programme de débutant : ne marche pas sniff

Publié : ven. 05/févr./2010 13:29
par guismoman33
***C'est bon j'ai réussi***

Je serai plus, pour un programme en MDI.

Car je vais créer un petit programme avec differente petit fonction, histoire d'apprendre.

Cela fait plaisir qu'un forum bouje et réponde rapidement.

Je veux savoir, comment je peux faire pour afficher le menu de la fenêtre principal qu'après avoir rentrer mon mot de passe?

Par la suite, quand j'aurai quelque programme dans les jambes j'aimerai donner des droits au utilisateur. SI c'est Vincent qui rentre afficher tout le contenu du menu, mais si c'est Thomas mettre que ça.

***************************************************************

Re: Petit programme de débutant : ne marche pas sniff

Publié : ven. 05/févr./2010 14:15
par Le Soldat Inconnu
J'ai pas tous suivi pour ton histoire de menu ? mettre un menu à la fenêtre ? regarde CreateMenu(