Page 3 sur 3

Publié : ven. 25/nov./2005 17:23
par Cls
Bon sinon moi aussi j'ai un petit problème :
j'ai 2 thread, l'un gérant un serveur, l'autre permettant la maj d'un serveur distant.
Et j'ai une boucle repeat / forever avec un Sleep_(10000) dedans.
Mon programme bouffe plus de 50% de ma mémoire !
Ma question est la suivante : y a t - il une api permettant de rendre la main à l'OS quand on est dans une boucle ou un moyen de minimiser l'utilisation de ma mémoire ?

Publié : ven. 25/nov./2005 17:25
par maitre we
le programme marche sauf que quand je le met en .exe ; il me remet tt le temps sur le mot de passe .


je m'explique :
j'entre le MDP ; il m(affiche le message comme quoi le ode est bon
puis
il me remet sur la fenetre ou je doit entrer le MDP ...etc...


il y a t-il un "remede" ?

Publié : ven. 25/nov./2005 17:35
par Cls
Chez moi, tout se passe bien... tu as rajouté quelque chose dans le code ?


PS : Par code barbare je voulais dire compliqué pour un débutant qui débute ... ;) !

Publié : ven. 25/nov./2005 17:39
par maitre we

Code : Tout sélectionner

; /* Liste chainée récupérant tous les parametres */ 
NewList Param.s() 


param.s = ProgramParameter() 

While param <> "" 
  AddElement(Param()) : Param() = param 
  param = ProgramParameter() 
Wend 

; /* Demande un mot de passe */ 
pass.s = InputRequester("Identification", "Veuillez entrer un MDP pour entre dans le programme...", "") 

If pass = "mot2pass" 
  MessageRequester("","Code Bon") 
Else 
  MessageRequester("", "Code Erroné...") 
  End 
EndIf 

; /* il faut ensuite que tu lances l'ouverture du fichier */ 

ForEach Param() 
  args.s = args.s + Param()  
Next 

RunProgram("programme Bastien.exe", args, "")
voila le code . ce que j'ai changé ne nui pas au fonctionement :? j'au juste changé le prg qu'il ouvre ...

Publié : ven. 25/nov./2005 17:49
par Cls
je ne vois qu'une seule explication : "programme Bastien.exe" est le nom que tu as donné à l'éxécutable : il se rappelle lui - même, comme dans une boucle.

Publié : ven. 25/nov./2005 17:50
par maitre we
c'est bon j'ai trouver :D

mais j'ai remarqué que quand je tape mon MDP , il est visible ... est-ce possible que quand je tape , les lettre et chiffre aparaisse sous des "***"...


excusé moi si je vous "emmerde"... :(

Publié : ven. 25/nov./2005 17:58
par Cls
Tu peux le faire mais tu dois créer une fenetre (grâce à la fonction OpenWindow(...)) et ajouter un StringGadget(..)

Ensuite il te faudra "gérer" la fenêtre, les évènements, les messages, etc...

Le programme va légèrement se compliquer... si t'es motivé, il te reste plus qu'à te farcir le manuel (fort bien fait d'ailleurs !)

Publié : ven. 25/nov./2005 18:00
par maitre we
je mi ataque tt de suite ... je pensse vous donner le resultat demain :!:

Publié : ven. 25/nov./2005 21:15
par maitre we
en fait ... je n'y arrive absolument pas !

qql peut t-il m'éclairé ?

Publié : ven. 25/nov./2005 21:19
par AWEAR
Télécharge la library de droopy
Il y a une fonction déja prévue pour il me semble

Publié : ven. 25/nov./2005 21:21
par maitre we
tu peu me dire ou je la trouve cete ===> "library de droopy" ?

Publié : ven. 25/nov./2005 21:27
par AWEAR
Tu cherches un message du gars qui s'appelle Droopy (il a posté dans débutant il y a pas longtemps), et tu clique sur le lien qui est dans sa signature.

Publié : ven. 25/nov./2005 21:36
par maitre we
j'y arrive pas : sa MERDE :(

Publié : sam. 26/nov./2005 14:47
par Cls
Bon, voila un petit bout de code qui devrait t'aider un peu...
Ne croit pas que ce sera comme ca à chaque fois par contre !

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

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

; /* Fonction retournant une chaine de caractere
;  * Elle prend en parametre le titre de la fenetre et le texte a afficher (sur 1 ligne) 
Procedure.s PasswordWindow(titre.s, text.s)
  ; /* Variable prévue pour le retour de la fonction
  ret.s = ""
  
  ; /* créé une fenetre */
  If OpenWindow(#Window_0, 401, 343, 331, 140,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , titre)
    
    ; /* créé une liste d'objet graphique sur la fenetre en cours (celle kon vient de créer) */
    If CreateGadgetList(WindowID())
      ; /* Ajoute un objet texte (affichage)*/
      TextGadget(#Text_0, 20, 20, 290, 25, text, #PB_Text_Center)
      ; /* ajoute un objet texte (entrée d'informations) avec option password */
      StringGadget(#String_0, 65, 55, 200, 20, "", #PB_String_Password)
      ; /* Ajoute deux boutons */
      ButtonGadget(#Button_0, 20, 100, 120, 25, "Ok")
      ButtonGadget(#Button_1, 180, 100, 120, 25, "Annuler")
    EndIf
  EndIf
  
  ; /* c'est dans cette boucle (repeat/until) qu'on gère les évenements de la fenetre */
  ; /* La variable stop est utilisee pour quitter la boucle */
  stop = 0
  ; /* Et c'est parti ! */
  Repeat
    ; /* Fonction renvoyant le numero de l'evenement qui vient de se produire */
    event = WaitWindowEvent()
    ; /* Structure conditionnelle (select/case) : on teste la variable event */
    Select event
      Case #PB_Event_CloseWindow ; /* on clik sur la croix : on quitte */
        stop = 1
        
      Case #PB_Event_Gadget      ; /* Un gadget a été cliké */
        Select EventGadgetID()   ; /* Lequel ? */
          Case #Button_0         ; /* Le #bouton_0 (Ok) 
            ret = GetGadgetText(#String_0) ;/* on retourne les infos contenus dans le #String_0 (le password) */
            stop = 1 ; /* on quitte la boucle */
          
          Case #Button_1  ;/* bouton annuler : on quitte */
            stop = 1
      EndSelect    
      
    EndSelect

  Until stop = 1  ; /* Teste d'arret de la boucle (repeat/until)
  
  ProcedureReturn ret ;/* on renvoi ici le resultat de la fonction */
EndProcedure ;// fin de la procedure

; /* on appelle ici la fonction PasswordWindow 
;  * le resultat est mis dans la variable pass */
pass.s = PasswordWindow("Password requis", "Veuillez entrer un password afin d'accéder aux inforamtions")

; /* Fenetre surgissante renvoyant les infos contenues dans pass */
MessageRequester("pass contient : ", pass)

Publié : sam. 26/nov./2005 14:52
par maitre we
merci pour ton code ... Mais j'ai reussi avant :P