Petit programme de débutant : ne marche pas sniff

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
guismoman33
Messages : 19
Inscription : jeu. 24/déc./2009 11:20

Petit programme de débutant : ne marche pas sniff

Message 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...
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message 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




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)]
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

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

Message 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.
guismoman33
Messages : 19
Inscription : jeu. 24/déc./2009 11:20

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

Message par guismoman33 »

Je ne sais pas lire l'anglais désolé mais merci pour les réponses
guismoman33
Messages : 19
Inscription : jeu. 24/déc./2009 11:20

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

Message 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?
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

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

Message par Atomo »

Je n'ai pas compris ce que tu veux faire.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

Un peu comme Word ? Photoshop ou autre ?

Regarde MDIgadget()
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)]
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

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

Message par Robrock55 »

Pour le livre, il y a une traduction en cours sur le forum non ?
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message 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:









@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Robrock55
Messages : 65
Inscription : lun. 01/févr./2010 17:04
Localisation : Meuse
Contact :

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

Message par Robrock55 »

Merci, moi qui étais en train de le chercher ;) Vais peut-etre contribuer :D
guismoman33
Messages : 19
Inscription : jeu. 24/déc./2009 11:20

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

Message 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.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

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

Message 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		


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

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

Message par Backup »

...
Dernière modification par Backup le mar. 19/août/2014 11:59, modifié 1 fois.
guismoman33
Messages : 19
Inscription : jeu. 24/déc./2009 11:20

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

Message 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.

***************************************************************
Dernière modification par guismoman33 le ven. 05/févr./2010 14:35, modifié 1 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

J'ai pas tous suivi pour ton histoire de menu ? mettre un menu à la fenêtre ? regarde CreateMenu(
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