pb Until Event= #PB_Event_CloseWindow

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

pb Until Event= #PB_Event_CloseWindow

Message par david »

ci-joint une partie de programme que j'avais fait sous pureB 3... il y a bien longtemps (je suis en train de me remettre a pureB)
j'ai essayé de l'adapter en pureB 4.51 mais j'ai un pb à la fin de la boucle???
entrainant un :"un autre operateur de fin de condition est attendu" au niveau de:

Code : Tout sélectionner

  Until Event= #PB_Event_CloseWindow
si qq'un peut me dire ce que j'ai zappé???
merci d'avance

Code : Tout sélectionner

;- debut du programme
;
; Window Constants
;
#Window_0 = 0

; Gadget Constants
;
#Gadget_2 = 1
#Gadget_3 = 2
#Gadget_4 = 3
#Gadget_5 = 4

presents$=""
  If OpenWindow(#Window_0,  PositionXX,  PositionYY, 160, 40, "Msnger MENU",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(0))
     
      ButtonImageGadget(#Gadget_2, 0, 0, 40, 40,  ImageID(2))
      ButtonImageGadget(#Gadget_3, 40, 0, 40, 40,  ImageID(3))
      ButtonImageGadget(#Gadget_4, 80, 0, 40  , 40, ImageID(4))
      ButtonImageGadget(#Gadget_5, 120, 0, 40, 40,  ImageID(5))
      GadgetToolTip(#Gadget_2,"Envoyer un message")
      GadgetToolTip(#Gadget_3,"Voir les correspondants connectés")
      GadgetToolTip(#Gadget_4,"A propos...")
      GadgetToolTip(#Gadget_5,"Fermer")
      EndIf

 Repeat
 Event = WaitWindowEvent()
 Select Event
 Case #PB_Event_Gadget
 Select EventGadget()

                Case 1 : Goto Lance_Writer ; Envoyer
                           
                Case 4 : Goto The_end:End; Fermer
                            
               Case  2 ; voir connectés
                          Resultat = ReadFile (0, path1$+"\on.txt")
                         If resultat <> 0
                        present1$ ="o"
                         EndIf
                       resultat = ReadFile (0, path2$+"\on.txt")
                       If resultat <> 0
                      present2$ ="o"
                        EndIf
                     resultat = ReadFile (0, path3$+"\on.txt")
                    If resultat <> 0
                   present3$ ="o"
                   EndIf

  
           If present1$ <>"o"
           If present2$ <>"o"
            If present3$ <>"o"
            pesents$=""
            EndIf
            EndIf
            EndIf 
                  If present1$ ="o"
                    presents$=name1$
                  EndIf
              If present2$ ="o"
              presents$=presents$+Chr(10)+name2$
             EndIf
              If present3$ ="o"
                presents$=presents$+Chr(10)+name3$
                EndIf
                        If presents$=""
                    MessageRequester("Msnger Friends", "Personne n'est connecté!", #MB_ICONINFORMATION)
                  EndIf    
                    If presents$<>""
                MessageRequester("Msnger Friends", "personnes actuellements connectées :"+Chr(10)+Chr(10)+presents$, #MB_ICONINFORMATION)
                      EndIf

                    
                    
    Case  3 ; A propos
      MessageRequester("A propos...", "Post Msnger"+Chr(10)+Chr(10)+"Réalisé Par David TURQUIN"+Chr(10)+"2005"+Chr(10), #MB_ICONINFORMATION)
    
    
   EndSelect
  Until Event= #PB_Event_CloseWindow

  
   EndIf
End
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: pb Until Event= #PB_Event_CloseWindow

Message par dayvid »

Et voilà !

Code : Tout sélectionner

; J'ai corriger, optimiser, et Re-formater ton code !

;- debut du programme
;
; Window Constants
;

; Les énumérations sont très pratiques pour déclarer rapidement une série de constantes sans s'occuper de leur valeur numérique.
; La première constante de l'énumération prendra la valeur 0, la constante suivante prendra la valeur 1 etc.
; Il est possible de changer la valeur de départ de l'énumération et d'ajuster la valeur utilisée pour l'incrémentation de chaque constante.
; Si nécessaire, il est possible d'affecter directement une valeur numérique à une constante (grâce à l'opérateur '=') et les constantes suivantes utiliseront cette nouvelle valeur comme valeur de base.
; Comme les énumerations n'acceptent que les nombres entiers, les nombres flottants seront arroundis à l'entier le plus proche.

; La constante réservée #PB_Compiler_EnumerationValue stocke la prochaine valeur qui sera utilisée par l'énumération.
; Cela peut être utile pour chaîner plusieurs énumérations. 

UsePNGImageDecoder() ; pour pouvoir afficher les image PNG correctement !, sinon sa marche pas lol

Enumeration ; Ici c'est mieux de faire sa car c'est le programme qui gère sa tous seule !
  #Window_0
  ; Gadget Constants
  #Gadget_2
  #Gadget_3
  #Gadget_4
  #Gadget_5
EndEnumeration

;{ Images
Enumeration
  #Image_1
  #Image_2
  #Image_3
  #Image_4
  #Image_5
EndEnumeration
;}

;{ Included Images
DataSection ; C'est ici ont on va dire au programme ou aller chercher les image, tu doit indiquer le chemin complet entre des guillemet comme dans l'exemple !
  Image_1:
  IncludeBinary "D:\disquette\mes documents\images\icones diverses\effacer.ico"
  Image_2:
  IncludeBinary "D:\disquette\mes documents\images\icones diverses\sauver.png"
  Image_3:
  IncludeBinary "D:\disquette\mes documents\images\icones diverses\ouvrire.png"
  Image_4:
  IncludeBinary "D:\disquette\mes documents\images\icones diverses\Quitter.ico"
  Image_5:
EndDataSection

presents$ = ""

; Ouvre une nouvelle fenêtre avec les paramètres spécifiés. Si #PB_Any est utilisé pour le paramètre '#Fenetre', le numéro de la fenêtre sera renvoyé dans 'Resultat'. 
; La nouvelle fenêtre devient la fenêtre active sans avoir besoin d'utiliser SetActiveWindow() (sauf si elle a été créée en mode invisible). Si Resultat = 0, la fenêtre ne peut être ouverte. 
; 
; 'LargeurInterne' et 'HauteurInterne' spécifient les dimensions nécessaires pour la zone interne de la fenêtre (sans les bordures et la barre de titre) afin d'assurer
; la compatibilité avec les systèmes d'habillage des fenêtres propres à Windows XP, AmigaOS et Linux (la taille des bordures peut en effet varier selon la police et/ou le thème utilisé).
; 'x' et 'y' indiquent la position initiale de la fenêtre (sauf si l'une des options de centrage est utilisée). Si l'une d'elle est #PB_Ignore, le système choisira une position pour la fenêtre. 
; 
; Le paramètre 'FenetreMereID' est facultatif et indique de quelle fenêtre la nouvelle fenêtre dépend. 'FenetreMereID' peut être obtenu facilement par la commande WindowID(). 
; 
; Les options possibles sont: 
;   #PB_Window_SystemMenu     : Autorise le menu système sur la barre de titre.
;   #PB_Window_MinimizeGadget : Ajoute l'icône 'Réduire' sur la barre de titre. #PB_Window_SystemMenu est ajouté automatiquement.
;   #PB_Window_MaximizeGadget : Ajoute l'icône 'Agrandir' sur la barre de titre. #PB_Window_SystemMenu est ajouté automatiquement.
;   #PB_Window_SizeGadget     : Ajoute les possibilités de redimensionnement à la fenêtre.
;   #PB_Window_Invisible      : Crée la fenêtre mais ne l'affiche pas. Non supporté sur AmigaOS.
;   #PB_Window_TitleBar       : Crée la fenêtre avec une barre de titre.
;   #PB_Window_BorderLess     : Crée une fenêtre sans bordure.
;   #PB_Window_Tool           : Crée une fenêtre avec une barre de titre plus fine, et non visible dans la barre des tâches.
;   #PB_Window_ScreenCentered : Centre la fenêtre au milieu de l'écran. Les paramètres x,y sont ignorés.
;   #PB_Window_WindowCentered : Centre la fenêtre au milieu de la fenêtre mère ('FenetreMereID' doit être spécifié). Les paramètres x,y sont ignorés.
;   #PB_Window_Maximize       : Ouvre la fenêtre en mode maximisé. (Note: sous Linux, certains gestionnaires de fenêtres ne supportent pas cela)
;   #PB_Window_Minimize       : Ouvre la fenêtre en mode minimisé.
;   #PB_Window_NoGadgets      : Empêche la création d'une GadgetList. UseGadgetList() peut être utilisé pour le faire plus tard.
; 
; Si le paramètre facultatif 'Options' n'est pas renseigné, #PB_Window_SystemMenu sera utilisé. 

Procedure Lance_Writer()
  
EndProcedure

Procedure The_end()
  End ; fin du programme
EndProcedure

Procedure Connect()
  ; ceci reste du provisoire et tu devra je pense améliorer cette Procedure, je t'aiderais si tu le souhaite a la rendre plus fluide et plus rapide
  
  ; Juste une petite aide !:
  
  ; Syntaxe
  ; 
  ; Resultat = ReadFile(#Fichier, NomFichier$) 
  ; Description
  ; 
  ; Ouvre un fichier pour des opérations de lecture d'informations uniquement. Si #PB_Any est utilisé pour le paramètre '#Fichier', le numéro du nouveau fichier sera renvoyé dans 'Resultat'. Si Resultat est différent de 0, l'ouverture du fichier a réussi, sinon, le fichier n'a pu être ouvert. 'Resultat' doit toujours être testé car la manipulation d'un fichier non créé peut occasionner un plantage sérieux. 
  ; 
  ; 
  ; Exemple: 
  ; 
  ;   If ReadFile(0, "Texte.txt")  ; Si le fichier peut être lu , on continue...
  ;     While Eof(0) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
  ;       Debug ReadString(0)      ; Affiche ligne par ligne le contenu du fichier
  ;     Wend
  ;     CloseFile(0)               ; Ferme le fichier précédemment ouvert
  ;   Else
  ;     MessageRequester("Information","Impossible d'ouvrir le fichier!")
  ;   EndIf
  
  Resultat = ReadFile (0, path1$+"\on.txt")
  
  If resultat <> 0
    present1$ ="o"
  EndIf
  
  resultat = ReadFile (0, path2$+"\on.txt")
  
  If resultat <> 0
    present2$ ="o"
  EndIf
  
  resultat = ReadFile (0, path3$+"\on.txt")
  
  If resultat <> 0
    present3$ ="o"
  EndIf
  
  If present1$ <> "o" And present2$ <> "o" And present3$ <> "o" ; C'est plus ergonomic d'utiliser les and au lieux de 3 if successif
    pesents$ = ""
  EndIf
  
  If present1$ = "o"
    presents$ = name1$
  EndIf
  
  If present2$ = "o"
    presents$ = presents$ + Chr(10) + name2$
  EndIf
  
  If present3$ = "o"
    presents$ = presents$ + Chr(10) + name3$
  EndIf
  
  If presents$ = ""
    MessageRequester("Msnger Friends", "Personne n'est connecté!", 64)
  EndIf  
  
  If presents$ <> ""
    MessageRequester("Msnger Friends", "personnes actuellements connectées :" + Chr(13) + presents$, 64) ; Utilise plutôt un chr(13) pour aller a mla ligne dans une boitte de message et chr(13) + chr(10) dans fichier texte par exemple !
  EndIf
EndProcedure

If OpenWindow(#Window_0, 0, 0, 160, 40, "Msnger MENU", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered) ; X et Y inutile avec #PB_Window_ScreenCentered qui sert a centrer la fenêtre, certe tu peut faire comme tu as fait mais vue que t'es variables n'étais pas initialiser avec une valeur, le programme considère qu'elle sont = à 0
  ; If CreateGadgetList(WindowID(0)) ; inutile avec les version de pure basic superieur a 4.31 me semble, car c'est automatique
  ; Attention au images qui ne sont pas initialiser car elle n'hexiste pas !
  ButtonImageGadget(#Gadget_2, 0, 0, 40, 40,  CatchImage(#Image_1, ?Image_1))
  ButtonImageGadget(#Gadget_3, 40, 0, 40, 40,  CatchImage(#Image_2, ?Image_2))
  ButtonImageGadget(#Gadget_4, 80, 0, 40  , 40, CatchImage(#Image_3, ?Image_3))
  ButtonImageGadget(#Gadget_5, 120, 0, 40, 40,  CatchImage(#Image_4, ?Image_4))
  GadgetToolTip(#Gadget_2,"Envoyer un message")
  GadgetToolTip(#Gadget_3,"Voir les correspondants connectés")
  GadgetToolTip(#Gadget_4,"A propos...")
  GadgetToolTip(#Gadget_5,"Fermer")
  ; EndIf
  
  Repeat
    
    Event = WaitWindowEvent(1) ; un petit minuteur est conseiller (mais pas obligatoire !) histoire que le programme continue de tourner même si tu n'est pas dessue (la souris ne bouge pas)
    
    Select Event
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case #Gadget_2
            ; je deconseil fortement les Goto / GoSub dans un programme, sa ne fait pas serieux et sa fout le bordèlle lol, utilise plutôt les procedure ou les macro a la place
            Lance_Writer()
            
          Case #Gadget_5
            ; je deconseil fortement les Goto / GoSub dans un programme, sa ne fait pas serieux et sa fout le bordèlle lol, utilise plutôt les procedure ou les macro a la place
            The_end()
            
            ; Erreur détécté ici, "End" inutile et ne sera pas pris en compte puisque tu demmande au programme d'aller a The_end
            ; End ; Fermer
            
          Case #Gadget_3 ; voir connectés
            Connect()
            
          Case #Gadget_4 ; A propos
            MessageRequester("A propos...", "Post Msnger" + Chr(13) + "Réalisé Par David TURQUIN" + Chr(13) + "2005", 64)
            
        EndSelect
    EndSelect ; manquant !
    
  Until Event= #PB_Event_CloseWindow
  
EndIf

End ; Inutile si il n'y a rien apres !, oui car voie-tu en faite des que le programme arrive a la fin du code, celui-ci se termine automatiquement !
Si tu as besoin d'un coup de main n'hésite pas a me solicité !
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: pb Until Event= #PB_Event_CloseWindow

Message par david »

ouahhh
bon je me doutais bien que les goto c'est pas du mégapropre (on n'avait que les goto et gosub sur les amstrad... lol).
c'est super cool parceque tu expliques bien le pourquoi des choses et ca me permet d'apprecier les avancees de pureB et de voir comment tout doit etre clair...
tes éléments sont bien définis, puis appelés... moi j'avais des trucs un peu dans tous les sens

pour info, la totalité du programme c'était:

Code : Tout sélectionner

;- Charge les paramètres PROG PRINCIPAL & Writer
;
LoadImage (2,"ecrire.ico")
LoadImage (3,"messager.ico")
LoadImage (4,"loupe.ico")
LoadImage (5,"sortir.ico")
;
  OpenFile(9,"param.ini") 
  If Lof(0) > 0 
    PositionXX=Val(ReadString(0)) 
    PositionYY=Val(ReadString(0)) 
    Else 
    PositionXX=0 
    PositionYY=0 
  EndIf 
  CloseFile(9)
;
If ReadFile(0, "Param.prefs")
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)  ;(met variables en memoire)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)

Resultat = RenameFile(adresse$+code$+"\off.txt", adresse$+code$+"\on.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Impossible mise en ligne...", #MB_ICONERROR) ;(pb lui dire)
EndIf 

MessageRequester("Msnger Opened", "Bonjour "+codename$+Chr(10)+Chr(10)+"Votre station Msnger est maintenant activée", #MB_ICONINFORMATION) ;(ok lui dire)
Else
  MessageRequester("Msnger Alert", "Le système n'a pas pu être paramétré...", #MB_ICONERROR) ;(pb charge Param.prefs)
  End
EndIf
Lance_Programm:
;
;- creation du timer (voir si existe fichier Texte)
;
Procedure AlertThread(Parameter)  ;****************rappel des variables Loader
If ReadFile(0, "Param.prefs")       ;***************sinon bug oublie....
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)
Else
  MessageRequester("Msnger Alert", "Des paramètres ont été modifiés..."+Chr(10)+"l'application se terminer!", #MB_ICONERROR)
  End
EndIf

courrier$="n"

  Repeat
    If stop$<>"o"
               
    Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name1$
    lettre$=lettre1$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name2$
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name3$
    lettre$=lettre3$
    EndIf
 
 
    If courrier$="o"
    MessageRequester("Messenger Info", "Vous avez un message de : "+nom$, 0)
    Goto Lance_Loader
    stop$="o"   
    EndIf
    EndIf
    
    Delay(10000)
  ForEver

EndProcedure
;
;- lance alerte automatique
;
CreateThread(@AlertThread(), 154) ; lance le timing
;

;- debut du programme
;
; Window Constants
;
#Window_0 = 0

; Gadget Constants
;
#Gadget_2 = 1
#Gadget_3 = 2
#Gadget_4 = 3
#Gadget_5 = 4

presents$=""
  If OpenWindow(#Window_0,  PositionXX,  PositionYY, 160, 40, "Msnger MENU",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(0))
     
      ButtonImageGadget(#Gadget_2, 0, 0, 40, 40,  ImageID(2))
      ButtonImageGadget(#Gadget_3, 40, 0, 40, 40,  ImageID(3))
      ButtonImageGadget(#Gadget_4, 80, 0, 40  , 40, ImageID(4))
      ButtonImageGadget(#Gadget_5, 120, 0, 40, 40,  ImageID(5))
      GadgetToolTip(#Gadget_2,"Envoyer un message")
      GadgetToolTip(#Gadget_3,"Voir les correspondants connectés")
      GadgetToolTip(#Gadget_4,"A propos...")
      GadgetToolTip(#Gadget_5,"Fermer")
      EndIf

 Repeat
 Event = WaitWindowEvent()
 Select Event
 Case #PB_Event_Gadget
 Select EventGadget()

                Case 1 : Goto Lance_Writer ; Envoyer
                           
                Case 4 : Goto The_end:End; Fermer
                            
               Case  2 ; voir connectés
                          Resultat = ReadFile (0, path1$+"\on.txt")
                         If resultat <> 0
                        present1$ ="o"
                         EndIf
                       resultat = ReadFile (0, path2$+"\on.txt")
                       If resultat <> 0
                      present2$ ="o"
                        EndIf
                     resultat = ReadFile (0, path3$+"\on.txt")
                    If resultat <> 0
                   present3$ ="o"
                   EndIf

  
           If present1$ <>"o"
           If present2$ <>"o"
            If present3$ <>"o"
            pesents$=""
            EndIf
            EndIf
            EndIf 
                  If present1$ ="o"
                    presents$=name1$
                  EndIf
              If present2$ ="o"
              presents$=presents$+Chr(10)+name2$
             EndIf
              If present3$ ="o"
                presents$=presents$+Chr(10)+name3$
                EndIf
                        If presents$=""
                    MessageRequester("Msnger Friends", "Personne n'est connecté!", #MB_ICONINFORMATION)
                  EndIf    
                    If presents$<>""
                MessageRequester("Msnger Friends", "personnes actuellements connectées :"+Chr(10)+Chr(10)+presents$, #MB_ICONINFORMATION)
                      EndIf

                    
                    
    Case  3 ; A propos
      MessageRequester("A propos...", "Post Msnger"+Chr(10)+Chr(10)+"Réalisé "+Chr(10)+Chr(10)+"Par David TURQUIN"+Chr(10)+"  @2005"+Chr(10), #MB_ICONINFORMATION)
    
    
   EndSelect
   Until Event = #PB_Event_CloseWindow

  
   EndIf
End
;
;
;- Writer
;
;
Lance_Writer:
;
#TITRE    = "Msnger Writer" 
#LARGEUR  = 315 
#HAUTEUR  = 200 

Procedure Sauver(texte.s,fichier.s) 
  If CreateFile(0,fichier) 
  WriteStringN(FormatDate("%dd:%mm:%yyyy", Date()) + " / " + FormatDate("%hh:%ii:%ss", Date()))
     WriteStringN("")
    WriteString(texte) 
    CloseFile(0) 
  EndIf 
  EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR, #HAUTEUR, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, #TITRE) 
CreateGadgetList(WindowID()) 
EditorGadget(0,5,5,#LARGEUR-10,#HAUTEUR-35) 
ButtonGadget(1,#LARGEUR-70,#HAUTEUR-25,65,20,"Quitter") 

ButtonGadget(2,5,#HAUTEUR-25,75,20, name1$) 
ButtonGadget(3,85,#HAUTEUR-25,75,20, name2$) 
ButtonGadget(4,165,#HAUTEUR-25,75,20,name3$) 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow : Goto The_end
        Case #PB_Event_Gadget 
      Select EventGadgetID() 
        Case 1 : 
        Goto The_end
        Case 2 : Sauver(GetGadgetText(0),path1$+"\Msg"+code$+".txt") 
         MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
        Case 3 : Sauver(GetGadgetText(0),path2$+"\Msg"+code$+".txt") 
        MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
        Case 4 : Sauver(GetGadgetText(0),path3$+"\Msg"+code$+".txt") 
       MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
             EndSelect 
  EndSelect 
ForEver 

End 
;
;
;
;
Lance_Loader:

Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")  ;***********************
    If resultat <> 0                                            ;remet sinon letrre$
    lettre$=lettre1$                                            ;pas en mémoire

    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    lettre$=lettre3$
    EndIf                                                          ;********************
fichier$=adresse$+code$+"\Msg"+lettre$+".txt"  

#TITRE2    = "Msnger Reader" 
#LARGEUR2  = 400 
#HAUTEUR2  = 300 

Procedure.s Lire(fichier.s) 
  texte.s = "" 
  If ReadFile(0,fichier) 
    While Eof(0)=0 
      texte + ReadString() + Chr(13) 
    Wend 
    CloseFile(0) 
  EndIf 
  ProcedureReturn texte 
EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR2, #HAUTEUR2, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, #TITRE2) 
CreateGadgetList(WindowID()) 
EditorGadget(0,5,5,#LARGEUR2-10,#HAUTEUR2-35) 
ButtonGadget(1,#LARGEUR2-80,#HAUTEUR2-25,75,20,"Quitter") 
ButtonGadget(2,165,#HAUTEUR2-25,75,20,"Répondre") 
SetGadgetText(0,Lire(fichier$)) 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow : Break 
    Case #PB_Event_Gadget 
      Select EventGadgetID() 
        Case 1 : 
        ;CloseFile(fichier$)
        DeleteFile(fichier$)
        Goto The_end
        Case 2 : 
        ;CloseFile(fichier$)
        DeleteFile(fichier$)
        Goto Lance_Writer
        End
  
      EndSelect 
  EndSelect 
ForEver 

End
;
;
;
;
;
;
;
;
;
The_end:
Resultat = RenameFile(adresse$+code$+"\on.txt", adresse$+code$+"\off.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Pb ferture prog", #MB_ICONERROR) ;(pb lui dire)
EndIf 
                            ;;****sauve param PosX et PosY fenetre
  OpenFile(9,"param.ini") 
  WriteStringN(Str(WindowX())) 
  WriteStringN(Str(WindowY())) 
  CloseFile(9) 
End
c'est pour ca par exemple que je ne centrais pas ma fenetre car mon fichier 'param.ini' contient 2 lignes avec la position de la fenetre.
***************
'Param.prefs' contient le nom de la personne puis le chemin+nom du fichier txt
Valeurs retouvées dans mon fichier de 2005:
Marie-Paule
E:\Msnger\Ptf0\Msg0.txt0
Adrien
E:\Msnger\Ptf2\Msg2.txt2
David
E:\Msnger\Ptf3\Msg3.txt3
1
Salima
*********************
Bon je vais tacher de m'inspirer de ton aide préciseuse pour le réaménager
car si j'intègre tes améliorations il y a encore qq pb concernant les autres parties du programme,
et la tu voit (avec la globalité du programme) qu'il y a un pb de transpostion dans la version pb4... mais aussi un "léger" ? (!!!! lol) problème d'architecture... hum

Merci encore pour ton aide
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: pb Until Event= #PB_Event_CloseWindow

Message par dayvid »

Je suis heureux de t'avoir rendu service mon cher David
lol, je porte le même prénom :lol:

Si tu as besoin d'aide, surtout tu n'hésite pas
ce sera pour moi un vrais plaisir de t'aider 8)

Edit:

Tien un petit corriger vite fait pour PureBasic supérieur a 4.30

Code : Tout sélectionner

;- Charge les paramètres PROG PRINCIPAL & Writer
;
LoadImage (2,"ecrire.ico")
LoadImage (3,"messager.ico")
LoadImage (4,"loupe.ico")
LoadImage (5,"sortir.ico")
;
  OpenFile(0,"param.ini") 
  If Lof(0) > 0 
    PositionXX=Val(ReadString(0)) 
    PositionYY=Val(ReadString(0)) 
    Else 
    PositionXX=0 
    PositionYY=0 
  EndIf 
  CloseFile(0)
;
If ReadFile(0, "Param.prefs")
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)  ;(met variables en memoire)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)

Resultat = RenameFile(adresse$+code$+"\off.txt", adresse$+code$+"\on.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Impossible mise en ligne...", #MB_ICONERROR) ;(pb lui dire)
EndIf 

MessageRequester("Msnger Opened", "Bonjour "+codename$+Chr(10)+Chr(10)+"Votre station Msnger est maintenant activée", #MB_ICONINFORMATION) ;(ok lui dire)
Else
  MessageRequester("Msnger Alert", "Le système n'a pas pu être paramétré...", #MB_ICONERROR) ;(pb charge Param.prefs)
  End
EndIf
Lance_Programm:
;
;- creation du timer (voir si existe fichier Texte)
;
Procedure AlertThread(Parameter)  ;****************rappel des variables Loader
If ReadFile(0, "Param.prefs")       ;***************sinon bug oublie....
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)
Else
  MessageRequester("Msnger Alert", "Des paramètres ont été modifiés..."+Chr(10)+"l'application se terminer!", #MB_ICONERROR)
  End
EndIf

courrier$="n"

  Repeat
    If stop$<>"o"
               
    Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name1$
    lettre$=lettre1$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name2$
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name3$
    lettre$=lettre3$
    EndIf


    If courrier$="o"
    MessageRequester("Messenger Info", "Vous avez un message de : "+nom$, 0)
    Goto Lance_Loader
    stop$="o"   
    EndIf
    EndIf
    
    Delay(10000)
  ForEver

EndProcedure
;
;- lance alerte automatique
;
CreateThread(@AlertThread(), 154) ; lance le timing
;

;- debut du programme
;
; Window Constants
;
#Window_0 = 0

; Gadget Constants
;
#Gadget_2 = 1
#Gadget_3 = 2
#Gadget_4 = 3
#Gadget_5 = 4

presents$=""
  If OpenWindow(#Window_0,  PositionXX,  PositionYY, 160, 40, "Msnger MENU",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(0))
     
      ButtonImageGadget(#Gadget_2, 0, 0, 40, 40,  ImageID(2))
      ButtonImageGadget(#Gadget_3, 40, 0, 40, 40,  ImageID(3))
      ButtonImageGadget(#Gadget_4, 80, 0, 40  , 40, ImageID(4))
      ButtonImageGadget(#Gadget_5, 120, 0, 40, 40,  ImageID(5))
      GadgetToolTip(#Gadget_2,"Envoyer un message")
      GadgetToolTip(#Gadget_3,"Voir les correspondants connectés")
      GadgetToolTip(#Gadget_4,"A propos...")
      GadgetToolTip(#Gadget_5,"Fermer")
      EndIf

Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()

                Case 1 : Goto Lance_Writer ; Envoyer
                           
                Case 4 : Goto The_end:End; Fermer
                            
               Case  2 ; voir connectés
                          Resultat = ReadFile (0, path1$+"\on.txt")
                         If resultat <> 0
                        present1$ ="o"
                         EndIf
                       resultat = ReadFile (0, path2$+"\on.txt")
                       If resultat <> 0
                      present2$ ="o"
                        EndIf
                     resultat = ReadFile (0, path3$+"\on.txt")
                    If resultat <> 0
                   present3$ ="o"
                   EndIf

  
           If present1$ <>"o"
           If present2$ <>"o"
            If present3$ <>"o"
            pesents$=""
            EndIf
            EndIf
            EndIf 
                  If present1$ ="o"
                    presents$=name1$
                  EndIf
              If present2$ ="o"
              presents$=presents$+Chr(10)+name2$
             EndIf
              If present3$ ="o"
                presents$=presents$+Chr(10)+name3$
                EndIf
                        If presents$=""
                    MessageRequester("Msnger Friends", "Personne n'est connecté!", #MB_ICONINFORMATION)
                  EndIf    
                    If presents$<>""
                MessageRequester("Msnger Friends", "personnes actuellements connectées :"+Chr(10)+Chr(10)+presents$, #MB_ICONINFORMATION)
                      EndIf

                    
                    
    Case  3 ; A propos
      MessageRequester("A propos...", "Post Msnger"+Chr(10)+Chr(10)+"Réalisé "+Chr(10)+Chr(10)+"Par David TURQUIN"+Chr(10)+"  @2005"+Chr(10), #MB_ICONINFORMATION)
    
    
  EndSelect
  EndSelect
   Until Event = #PB_Event_CloseWindow

  
   EndIf
End
;
;
;- Writer
;
;
Lance_Writer:
;
#TITRE    = "Msnger Writer" 
#LARGEUR  = 315 
#HAUTEUR  = 200 

Procedure Sauver(texte.s,fichier.s) 
  If CreateFile(0,fichier) 
  WriteStringN(0, FormatDate("%dd:%mm:%yyyy", Date()) + " / " + FormatDate("%hh:%ii:%ss", Date()))
     WriteStringN(0, "")
    WriteString(0, texte) 
    CloseFile(0) 
  EndIf 
  EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR, #HAUTEUR, #TITRE, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
CreateGadgetList(WindowID(0)) 
EditorGadget(0,5,5,#LARGEUR-10,#HAUTEUR-35) 
ButtonGadget(1,#LARGEUR-70,#HAUTEUR-25,65,20,"Quitter") 

ButtonGadget(2,5,#HAUTEUR-25,75,20, name1$) 
ButtonGadget(3,85,#HAUTEUR-25,75,20, name2$) 
ButtonGadget(4,165,#HAUTEUR-25,75,20,name3$) 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow : Goto The_end
        Case #PB_Event_Gadget 
      Select EventGadget() 
        Case 1 : 
        Goto The_end
        Case 2 : Sauver(GetGadgetText(0),path1$+"\Msg"+code$+".txt") 
         MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
        Case 3 : Sauver(GetGadgetText(0),path2$+"\Msg"+code$+".txt") 
        MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
        Case 4 : Sauver(GetGadgetText(0),path3$+"\Msg"+code$+".txt") 
       MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
             EndSelect 
  EndSelect 
ForEver 

End 
;
;
;
;
Lance_Loader:

Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")  ;***********************
    If resultat <> 0                                            ;remet sinon letrre$
    lettre$=lettre1$                                            ;pas en mémoire

    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    lettre$=lettre3$
    EndIf                                                          ;********************
fichier$=adresse$+code$+"\Msg"+lettre$+".txt"  

#TITRE2    = "Msnger Reader" 
#LARGEUR2  = 400 
#HAUTEUR2  = 300 

Procedure.s Lire(fichier.s) 
  texte.s = "" 
  If ReadFile(0,fichier) 
    While Eof(0)=0 
      texte + ReadString(0) + Chr(13) 
    Wend 
    CloseFile(0) 
  EndIf 
  ProcedureReturn texte 
EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR2, #HAUTEUR2, #TITRE2, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
CreateGadgetList(WindowID(0)) 
EditorGadget(0,5,5,#LARGEUR2-10,#HAUTEUR2-35) 
ButtonGadget(1,#LARGEUR2-80,#HAUTEUR2-25,75,20,"Quitter") 
ButtonGadget(2,165,#HAUTEUR2-25,75,20,"Répondre") 
SetGadgetText(0,Lire(fichier$)) 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow : Break 
    Case #PB_Event_Gadget 
      Select EventGadget() 
        Case 1 : 
        ;CloseFile(fichier$)
        DeleteFile(fichier$)
        Goto The_end
        Case 2 : 
        ;CloseFile(fichier$)
        DeleteFile(fichier$)
        Goto Lance_Writer
        End
  
      EndSelect 
  EndSelect 
ForEver 

End
;
;
;
;
;
;
;
;
;
The_end:
Resultat = RenameFile(adresse$+code$+"\on.txt", adresse$+code$+"\off.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Pb ferture prog", #MB_ICONERROR) ;(pb lui dire)
EndIf 
                            ;;****sauve param PosX et PosY fenetre
  OpenFile(9,"param.ini") 
  WriteStringN(0, Str(WindowX(0))) 
  WriteStringN(0, Str(WindowY(0))) 
  CloseFile(9) 
End

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: pb Until Event= #PB_Event_CloseWindow

Message par david »

j'ai commencé a faire un peu de nettoyage... il y a encore du boulot mais le gros du programme tourne. pour la réorganisation suivant tes bons conseils il faudra plus de temps je regarderais ca a tete reposée...
sinon ca a l'air d'aller,
A part quand "un message arrive" (creation d'un fichier genre Msg1.txt) il ne le dit pas. je pense que c'est un pb lie au WaitEvent... mais je ne sais pas le remplacer
Quand on clic sur le bouton dans 'Msnger Writer' il ne répond a rien et je pense que le pb est le même (normalement il devrait créer ce fameux fichier dans le dossier d'une autre personne)

Code : Tout sélectionner

;- Charge les paramètres PROG PRINCIPAL & Writer
;
LoadImage (2,"ecrire.ico")
LoadImage (3,"messager.ico")
LoadImage (4,"loupe.ico")
LoadImage (5,"sortir.ico")
;
  OpenFile(0,"param.ini") 
  If Lof(0) > 0 
    PositionXX=Val(ReadString(0)) 
    PositionYY=Val(ReadString(0)) 
    Else 
    PositionXX=0 
    PositionYY=0 
  EndIf 
  CloseFile(0)
;
If ReadFile(0, "Param.prefs")
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)  ;(met variables en memoire)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)

Resultat = RenameFile(adresse$+code$+"\off.txt", adresse$+code$+"\on.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Impossible mise en ligne...", #MB_ICONERROR) ;(pb lui dire)
EndIf 

MessageRequester("Msnger Opened", "Bonjour "+codename$+Chr(10)+Chr(10)+"Votre station Msnger est maintenant activée", #MB_ICONINFORMATION) ;(ok lui dire)
Else
  MessageRequester("Msnger Alert", "Le système n'a pas pu être paramétré...", #MB_ICONERROR) ;(pb charge Param.prefs)
  End
EndIf
Lance_Programm:
;
;- creation du timer (voir si existe fichier Texte)
;
Procedure AlertThread(Parameter)  ;****************rappel des variables Loader
If ReadFile(0, "Param.prefs")       ;***************sinon bug oublie....
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)
Else
  MessageRequester("Msnger Alert", "Des paramètres ont été modifiés..."+Chr(10)+"l'application se terminer!", #MB_ICONERROR)
  End
EndIf

courrier$="n"

  Repeat
    If stop$<>"o"
               
    Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name1$
    lettre$=lettre1$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name2$
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name3$
    lettre$=lettre3$
    EndIf
 
 
    If courrier$="o"
    MessageRequester("Messenger Info", "Vous avez un message de : "+nom$, 0)
    Goto Lance_Loader
    stop$="o"   
    EndIf
    EndIf
    
    Delay(10000)
  ForEver

EndProcedure
;
;- lance alerte automatique
;
CreateThread(@AlertThread(), 154) ; lance le timing
;

;- debut du programme
;
; Window Constants
;
#Window_0 = 0

; Gadget Constants
;
#Gadget_2 = 1
#Gadget_3 = 2
#Gadget_4 = 3
#Gadget_5 = 4

presents$=""
  If OpenWindow(#Window_0,  PositionXX,  PositionYY, 160, 40, "Msnger MENU",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ButtonImageGadget(#Gadget_2, 0, 0, 40, 40,  ImageID(2))
      ButtonImageGadget(#Gadget_3, 40, 0, 40, 40,  ImageID(3))
      ButtonImageGadget(#Gadget_4, 80, 0, 40  , 40, ImageID(4))
      ButtonImageGadget(#Gadget_5, 120, 0, 40, 40,  ImageID(5))
      GadgetToolTip(#Gadget_2,"Envoyer un message")
      GadgetToolTip(#Gadget_3,"Voir les correspondants connectés")
      GadgetToolTip(#Gadget_4,"A propos...")
      GadgetToolTip(#Gadget_5,"Fermer")
 
 Repeat
 Event = WaitWindowEvent()
 Select Event
 Case #PB_Event_Gadget
 Select EventGadget()

                Case 1 : Goto Lance_Writer ; Envoyer
                           
                Case 4 : Goto The_end:End; Fermer
                            
                Case  2 ; voir connectés
                        presents$=""
                         Resultat = ReadFile (0, path1$+"\on.txt")
                         If resultat <> 0
                        present1$ ="o"
                         EndIf
                       resultat = ReadFile (0, path2$+"\on.txt")
                       If resultat <> 0
                      present2$ ="o"
                        EndIf
                     resultat = ReadFile (0, path3$+"\on.txt")
                    If resultat <> 0
                   present3$ ="o"
                   EndIf

                ;    If present1$ <> "o" And present2$ <> "o" And present3$ <> "o" 
                ;   presents$ = ""
                ;   EndIf
  
                  If present1$ ="o"
                    presents$=name1$
                  EndIf
              If present2$ ="o"
              presents$=presents$+Chr(10)+name2$
             EndIf
              If present3$ ="o"
                presents$=presents$+Chr(10)+name3$
                EndIf
                        If presents$=""
                    MessageRequester("Msnger Friends", "Personne n'est connecté!", #MB_ICONINFORMATION)
                  EndIf    
                    If presents$<>""
                MessageRequester("Msnger Friends", "personnes actuellements connectées :"+Chr(10)+Chr(10)+presents$, #MB_ICONINFORMATION)
                      EndIf
                    
    Case  3 ; A propos
      MessageRequester("A propos...", "Post Msnger"+Chr(10)+Chr(10)+"Réalisé pour La Poste"+Chr(10)+Chr(10)+"Par David TURQUIN"+Chr(10)+"  Copyright @2005"+Chr(10), #MB_ICONINFORMATION)
    
    EndSelect 
   EndSelect
   Until Event = #PB_Event_CloseWindow
 
   EndIf
End
;
;
;- Writer
;
;
Lance_Writer:
;
#TITRE    = "Msnger Writer" 
#LARGEUR  = 315 
#HAUTEUR  = 200 

Procedure Sauver(texte.s,fichier.s) 
  If CreateFile(0,fichier) 
  WriteStringN(0,FormatDate("%dd:%mm:%yyyy", Date()) + " / " + FormatDate("%hh:%ii:%ss", Date()))
     WriteStringN(0,"")
    WriteString(0,texte) 
    CloseFile(0) 
  EndIf 
  EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR, #HAUTEUR,#TITRE, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
EditorGadget(0,5,5,#LARGEUR-10,#HAUTEUR-35) 
ButtonGadget(1,#LARGEUR-70,#HAUTEUR-25,65,20,"Quitter") 
ButtonGadget(2,5,#HAUTEUR-25,75,20, name1$) 
ButtonGadget(3,85,#HAUTEUR-25,75,20, name2$) 
ButtonGadget(4,165,#HAUTEUR-25,75,20,name3$) 

Repeat 
  Event=WaitWindowEvent(1) 
  Select Event
      
    Case #PB_Event_CloseWindow : Goto The_end ;verif*****************
    Case #PB_Event_Gadget 
      
      Select Event
        Case 1 : Goto The_end
          
        Case 2 : Sauver(GetGadgetText(0),path1$+"\Msg"+code$+".txt") 
         MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
        
      Case 3 : Sauver(GetGadgetText(0),path2$+"\Msg"+code$+".txt") 
        MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
        
      Case 4 : Sauver(GetGadgetText(0),path3$+"\Msg"+code$+".txt") 
       MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto The_end
             EndSelect 
  EndSelect 
Until Event=#PB_Event_CloseWindow

End 
;
;
;
;
Lance_Loader:

Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")  ;***********************
    If resultat <> 0                                            ;remet sinon letrre$
    lettre$=lettre1$                                            ;pas en mémoire

    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    lettre$=lettre3$
    EndIf                                                          ;********************
fichier$=adresse$+code$+"\Msg"+lettre$+".txt"  

#TITRE2    = "Msnger Reader" 
#LARGEUR2  = 400 
#HAUTEUR2  = 300 

Procedure.s Lire(fichier.s) 
  texte.s = "" 
  If ReadFile(0,fichier) 
    While Eof(0)=0 
      texte + ReadString(0) + Chr(13) 
    Wend 
    CloseFile(0) 
  EndIf 
  ProcedureReturn texte 
EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR2, #HAUTEUR2, #TITRE2,#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
;CreateGadgetList(WindowID(0)) 
EditorGadget(0,5,5,#LARGEUR2-10,#HAUTEUR2-35) 
ButtonGadget(1,#LARGEUR2-80,#HAUTEUR2-25,75,20,"Quitter") 
ButtonGadget(2,165,#HAUTEUR2-25,75,20,"Répondre") 
SetGadgetText(0,Lire(fichier$)) 

Repeat 
  Event= WaitWindowEvent(1) 
      Select Event 
    Case #PB_Event_CloseWindow : Break 
    Case #PB_Event_Gadget 
    
        Case 1 : 
        ;CloseFile(fichier$)
        DeleteFile(fichier$)
        Goto The_end
        
      Case 2 : 
        ;CloseFile(fichier$)
        DeleteFile(fichier$)
        Goto Lance_Writer
        End
  
      EndSelect 

Until Event=#PB_Event_CloseWindow

End
;

;
;
;
;
The_end:
Resultat = RenameFile(adresse$+code$+"\on.txt", adresse$+code$+"\off.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Pb ferture prog", #MB_ICONERROR) ;(pb lui dire)
EndIf 
                            ;;****sauve param PosX et PosY fenetre
  OpenFile(0,"param.ini") 
  WriteStringN(0,Str(WindowX(0))) 
  WriteStringN(0,Str(WindowY(0))) 
  CloseFile(0) 
End
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: pb Until Event= #PB_Event_CloseWindow

Message par Ar-S »

david a écrit :(...)
Bon je vais tacher de m'inspirer de ton aide préciseuse pour le réaménager
car si j'intègre tes améliorations il y a encore qq pb concernant les autres parties du programme,
et la tu voit (avec la globalité du programme) qu'il y a un pb de transpostion dans la version pb4... mais aussi un "léger" ? (!!!! lol) problème d'architecture... hum

Merci encore pour ton aide
Pas trop le temps de décortiquer ton code mais petits conseils tout de même.
- Lorsque que tu écris dans un fichier, fais toujours une vérification (if / else) sinon tu risques d'avoir des surprises.
idem pour le chargement des images.
- 2eme chose, pour ton fichiers pref, je te conseils de regarder la doc concernant les commandes natives, très simple d'utilisation.
- Ton thread, il vaut mieux l'utiliser de la sorte
monthread = CreateThread(@AlertThread(), 154)
- N'oublie pas de tuer le Thread lorsqu'il ne sert plus. KillThread(monthread)

Les goto / gosub c'est sur qu'ils deviennent obsolètes. Il n'empêche que leur utilisation n'est ni dégradante ni honteuse :)
Chacun ses gouts. En revanche, du goto/gosub mal placé et tu peux crasher ton programme et plus si affinité :mrgreen:

---edit----
Tu peux me dire ce que ce programme est censé faire (dans le détail)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: pb Until Event= #PB_Event_CloseWindow

Message par dayvid »

Les goto / gosub c'est sur qu'ils deviennent obsolètes. Il n'empêche que leur utilisation n'est ni dégradante ni honteuse
Bin ça, c'est toi qui le dit, je suis d'accord avec toi mais j'ai lue en soit qu'un programme avec ceci dedans ne fesais pas serieux et devais même être banir pour tous bon programeur !

Et puis sa met le boxon dans le programme et ont comprend plus rien après :lol:
pour débuté, ont les utilises, ont fait nos petits essais, des fois ça semble utile puis en fin de compte avec le temps ont se rend compte que c'étais pas aussie géniale que sa !

Utiliser les Macros ou les procedures est bien plus conseillé ! :wink:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: pb Until Event= #PB_Event_CloseWindow

Message par Ar-S »

dayvid a écrit :Bin ça, c'est toi qui le dit
je sais je viens de l'écrire :)
dayvid a écrit :j'ai lu en soit qu'un programme avec ceci dedans ne fesait pas sérieux et devait même être banni par tout bon programmeur !
Tu as lu ça ou ?
dayvid a écrit :Et puis sa met le boxon dans le programme et ont comprend plus rien après :lol:
ça met pas le boxon si tu fais les choses proprement, c'est toujours pareil.
dayvid a écrit :Utiliser les Macros ou les procedures est bien plus conseillé !
Je vois pas ce que les macros viennent faire là...
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: pb Until Event= #PB_Event_CloseWindow

Message par dayvid »

Bin timagine toi un programme avec 50 goto et gosub ?
et puis qui plus est niveau fluidité, c'est pas top !

J'ai lue ceci ici même il me semblerais ya un momment !

Pour les macro, p'tetre une petit erreur de ma part :wink:

Non et puis même, tu imagine toi pour relire ton programme ? :lol:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: pb Until Event= #PB_Event_CloseWindow

Message par Ar-S »

je m'auto recite au cas ou tu ais mal compris ce que j'ai écris.
Les goto / gosub c'est sur qu'ils deviennent obsolètes. Il n'empêche que leur utilisation n'est ni dégradante ni honteuse :)
Chacun ses gouts. En revanche, du goto/gosub mal placé et tu peux crasher ton programme et plus si affinité :mrgreen:
Regarde...

3 Codes
3 résultats similaires
3 façon de faire...

Code : Tout sélectionner

;-----;

i = 1
Message:
MessageRequester ("Methode Goto", "Message "+Str(i) ,#MB_OK)
i+1
If i < 4
  Goto Message
EndIf

Debug "voilà"


;-----;


Procedure coco1()
  MessageRequester ("Methode Procedure foireuse", "message1",#MB_OK) 
EndProcedure

Procedure coco2()
  MessageRequester ("Methode Procedure foireuse", "message2",#MB_OK) 
EndProcedure

Procedure coco3()
  MessageRequester ("Methode Procedure foireuse", "message3",#MB_OK) 
EndProcedure

coco1()
coco2()
coco3()

; ------- ;

Procedure coco()
  For j = 1 To 3
    MessageRequester ("Methode procedure utile", "Message " +Str(j),#MB_OK)
  Next
EndProcedure

coco()
Si je dois croiser un de ces codes sur le forum, je préfère évidement le dernier. Mais vient ensuite celui du goto puis enfin celui utilisant les procédure d'un façon foireuse... Tu vois ce que je veux dire ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: pb Until Event= #PB_Event_CloseWindow

Message par dayvid »

Ouais mais dans certain cas, c'est pas toujours évident !
en tous qu'a si c'est bien fait encore sa va mais si ya des goto partout tu imagine toi le bordel :lol:

Mais oui ya pas de honte a utiliser des goto/gosub
les débutant fond ça généralement !

Hé ! moi aussi je le fesais :wink:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: pb Until Event= #PB_Event_CloseWindow

Message par david »

sur le débat des gosub et goto je ne ferais pas de commentaires étant simplement débutant. J'ai bien compris qu'il y a plusieurs façon d'arriver au même résultat, après on peut optimiser le code et le rendre plus clair... En tout cas je prends note de tous vos conseils et vous en remercie.

Réponse à Ar-S:
En fait, ayant des ordi bridés par ADMIN au bureau et ne pouvant installer MSN...
J'avais créé ce petit prog il y a qq années (que je souhaite "réhabiliter" car les ordis sont tjs bridés et çà me permet de me remettre à PB...)
J'utilise le lecteur réseau accessible pour tous les PC du bureau pour communiquer les infos.

Le fichier 'param.ini' met en mémoire la position de la fenêtre pour qu'à chaque lancement du programme elle se positionne où elle était avant (chaque utilisateur peut la placer où il souhaite en fonction de ses propres préférences)
Le fichier 'Param.prefs' liste les noms des gens et le chemin d'accès de leur dossier personnnel.

1. Quand les collègues lancent mon programme il crée un fichier on.txt dans leur dossier personnel sur le disque réseau, et quand ils ferment le programme cela transforme en off.txt
=> cela permet d'identifier qui est connecté ou non dans le bureau
2. Quand le programme est ouvert il va voir régulièrement si j'ai un message et m'en informe.
Il va voir si fichier 'MsgX.txt' existe (ou X correspond au n° répertoire du collègue pour identifier qui m'a envoyé ce message). Si je lis le message il l'efface pour stopper l'envoi des thread.
3. Si j'ecris à un collègue le fichier s'enregistre dans son dossier personnel avec les mêmes caractéristiques 'MsgX.txt' (ou X correspond à mon n° pour que l'autre sache que =le message qu'il reçoit dans son dossier vient de moi).
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: pb Until Event= #PB_Event_CloseWindow

Message par david »

bon c'est sur, je vais l'optimiser mais en attendant ça fonctionne...
je met le programme a disposition pour ceux qui le souhaitent (voir message précédent pour voir à quoi il sert et comment il fonctionne). Je vais tâcher prochainement de l'améliorer visuellement et de réordonner tout ça sur les conseils qui m'ont été donnés.
J'ai enfin pu générer le code, et cet aboutissement est un remerciement à tous ceux qui m'ont aidés depuis son origine (2005) jusqu'à sa "remise en service"
david

Code : Tout sélectionner

;- Charge les paramètres PROG PRINCIPAL & Writer
;
LoadImage (2,"ecrire.ico")
LoadImage (3,"messager.ico")
LoadImage (4,"loupe.ico")
LoadImage (5,"sortir.ico")
;
  OpenFile(0,"param.ini") 
  If Lof(0) > 0 
    PositionXX=Val(ReadString(0)) 
    PositionYY=Val(ReadString(0)) 
    Else 
    PositionXX=0 
    PositionYY=0 
  EndIf 
  CloseFile(0)
;
If ReadFile(0, "Param.prefs")
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)  ;(met variables en memoire)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)

Resultat = RenameFile(adresse$+code$+"\off.txt", adresse$+code$+"\on.txt")  ;(dit au prog que connecté)
If resultat = 0
  MessageRequester("Information", "Le programme n'a pas été fermé correctement lors de la dernière session", #MB_ICONERROR) ;(pb lui dire)
EndIf 

MessageRequester("Bienvenue", "Bonjour "+codename$+Chr(10)+Chr(10)+"Votre station Msnger est maintenant activée", #MB_ICONINFORMATION) ;(ok lui dire)
Else
  MessageRequester("Pb Fichier : Param.prefs", "Le système n'a pas pu être paramétré correctement"+Chr(10)+"Veuillez relancer l'application ou la réinstaller", #MB_ICONERROR) ;(pb charge Param.prefs)
  End
EndIf
Lance_Programm:
;
;- creation du timer (voir si existe fichier Texte)
;
Procedure AlertThread(Parameter)  ;****************rappel des variables Loader
If ReadFile(0, "Param.prefs")       ;***************sinon bug oublie....
  While Eof(0) = 0
    name1$   = ReadString(0)
    ligne1$ = ReadString(0)
    name2$ = ReadString(0)
    ligne2$ = ReadString(0)
    name3$   = ReadString(0)
    ligne3$ = ReadString(0)
    code$ = ReadString(0)
    codename$ = ReadString(0)
  Wend
  CloseFile(0)
lettre1$ = Right(ligne1$, 1)
lettre2$ = Right(ligne2$, 1)
lettre3$ = Right(ligne3$, 1)
path1$ = Left(ligne1$, 14) 
path2$ = Left(ligne2$, 14) 
path3$ = Left(ligne3$, 14) 
namel1$ = Mid(ligne1$, 16, 8) 
namel2$ = Mid(ligne2$, 16, 8) 
namel3$ = Mid(ligne3$, 16, 8) 
adresse$ = Left(ligne1$,13)
Else
  MessageRequester("Msnger Alert", "Des paramètres ont été modifiés..."+Chr(10)+"l'application se terminer!", #MB_ICONERROR)
  End
EndIf

courrier$="n"

  Repeat
    If stop$<>"o"
               
    Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name1$
    lettre$=lettre1$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name2$
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    courrier$="o"
    nom$=name3$
    lettre$=lettre3$
    EndIf
 
 
    If courrier$="o"
    MessageRequester("Messenger Info", "Vous avez un message de : "+nom$, 0)
    Goto Lance_Loader
    stop$="o"   
    EndIf
    EndIf
    
    Delay(10000)
  ForEver

EndProcedure
;
;- lance alerte automatique
;
;- debut du programme
;
; Window Constants
;
#Window_0 = 0

; Gadget Constants
;
#Gadget_2 = 1
#Gadget_3 = 2
#Gadget_4 = 3
#Gadget_5 = 4

debut_programme:
monthread = CreateThread(@AlertThread(), 154) ; lance le timing
presents$=""
 If OpenWindow(#Window_0,  PositionXX,  PositionYY, 160, 40, "Msnger MENU",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ButtonImageGadget(#Gadget_2, 0, 0, 40, 40,  ImageID(2))
      ButtonImageGadget(#Gadget_3, 40, 0, 40, 40,  ImageID(3))
      ButtonImageGadget(#Gadget_4, 80, 0, 40  , 40, ImageID(4))
      ButtonImageGadget(#Gadget_5, 120, 0, 40, 40,  ImageID(5))
      GadgetToolTip(#Gadget_2,"Envoyer un message")
      GadgetToolTip(#Gadget_3,"Voir les correspondants connectés")
      GadgetToolTip(#Gadget_4,"A propos...")
      GadgetToolTip(#Gadget_5,"Fermer")
 
 Repeat
 Event = WaitWindowEvent()
 Select Event
 Case #PB_Event_Gadget
 Select EventGadget()

                Case 1 : Goto Lance_Writer ; Envoyer
                           
                Case 4 : Goto The_end:End; Fermer
                            
                Case  2 ; voir connectés
                        presents$=""
                         Resultat = ReadFile (0, path1$+"\on.txt")
                         If resultat <> 0
                        present1$ ="o"
                         EndIf
                       resultat = ReadFile (0, path2$+"\on.txt")
                       If resultat <> 0
                      present2$ ="o"
                        EndIf
                     resultat = ReadFile (0, path3$+"\on.txt")
                    If resultat <> 0
                   present3$ ="o"
                   EndIf

                ;    If present1$ <> "o" And present2$ <> "o" And present3$ <> "o" 
                ;   presents$ = ""
                ;   EndIf
  
                  If present1$ ="o"
                    presents$="- "+name1$
                  EndIf
              If present2$ ="o"
              presents$=presents$+Chr(10)+"- "+name2$
             EndIf
              If present3$ ="o"
                presents$=presents$+Chr(10)+"- "+name3$
                EndIf
                        If presents$=""
                    MessageRequester("Msnger Friends", "Personne n'est connecté!", #MB_ICONINFORMATION)
                  EndIf    
                    If presents$<>""
                MessageRequester("Msnger Friends", "personnes actuellements connectées :"+Chr(10)+presents$+Chr(10)+Chr(10), #MB_ICONINFORMATION)
                      EndIf
                    
    Case  3 ; A propos
      MessageRequester("A propos...", "Post Msnger"+Chr(10)+"Utilitaire de Messagerie Instantanée"+Chr(10)+Chr(10)+Chr(10)+"Par David TURQUIN @2005-2012"+Chr(10), #MB_ICONINFORMATION)
    
    EndSelect 
   EndSelect
   Until Event = #PB_Event_CloseWindow
 EndIf
  End
;
;
;- Writer
;
;
Lance_Writer:
;
#TITRE    = "Msnger Writer" 
#LARGEUR  = 315 
#HAUTEUR  = 200 

Procedure Sauver(texte.s,fichier.s) 
  If CreateFile(0,fichier) 
  WriteStringN(0,FormatDate("%dd:%mm:%yyyy", Date()) + " / " + FormatDate("%hh:%ii:%ss", Date()))
     WriteStringN(0,"")
    WriteString(0,texte) 
    CloseFile(0) 
  EndIf 
  EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR, #HAUTEUR,#TITRE, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
EditorGadget(0,5,5,#LARGEUR-10,#HAUTEUR-35) 
ButtonGadget(1,#LARGEUR-70,#HAUTEUR-25,65,20,"Quitter") 
ButtonGadget(2,5,#HAUTEUR-25,75,20, name1$) 
ButtonGadget(3,85,#HAUTEUR-25,75,20, name2$) 
ButtonGadget(4,165,#HAUTEUR-25,75,20,name3$) 

 Repeat
 Event = WaitWindowEvent()
 Select Event
   Case #PB_Event_CloseWindow : Goto The_end ;verif*****************
    Case #PB_Event_Gadget 
 Select EventGadget()
      
  
        Case 1 : Goto debut_programme
          
        Case 2 : Sauver(GetGadgetText(0),path1$+"\Msg"+code$+".txt") 
         MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto debut_programme
        
      Case 3 : Sauver(GetGadgetText(0),path2$+"\Msg"+code$+".txt") 
        MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto debut_programme
        
      Case 4 : Sauver(GetGadgetText(0),path3$+"\Msg"+code$+".txt") 
       MessageRequester("Attention", "Votre message a été envoyé...", #MB_ICONINFORMATION)
        Goto debut_programme
   EndSelect 
  EndSelect 
Until Event=#PB_Event_CloseWindow
End 
;
;
;
;
Lance_Loader:

Resultat = ReadFile (0, adresse$+code$+"\msg"+lettre1$+".txt")  ;***********************
    If resultat <> 0                                            ;remet sinon letrre$
    lettre$=lettre1$                                            ;pas en mémoire

    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre2$+".txt")
    If resultat <> 0
    lettre$=lettre2$
    EndIf
    resultat = ReadFile (0, adresse$+code$+"\msg"+lettre3$+".txt")
    If resultat <> 0
    lettre$=lettre3$
    EndIf                                                          ;********************
fichier$=adresse$+code$+"\Msg"+lettre$+".txt"  

#TITRE2    = "Msnger Reader" 
#LARGEUR2  = 400 
#HAUTEUR2  = 300 

Procedure.s Lire(fichier.s) 
  texte.s = "" 
  If ReadFile(0,fichier) 
    While Eof(0)=0 
      texte + ReadString(0) + Chr(13) 
    Wend 
    CloseFile(0) 
  EndIf 
  ProcedureReturn texte 
EndProcedure 

OpenWindow(0, 0, 0, #LARGEUR2, #HAUTEUR2, #TITRE2,#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) 
EditorGadget(0,5,5,#LARGEUR2-10,#HAUTEUR2-35) 
ButtonGadget(1,#LARGEUR2-80,#HAUTEUR2-25,75,20,"Quitter") 
ButtonGadget(2,165,#HAUTEUR2-25,75,20,"Répondre") 
SetGadgetText(0,Lire(fichier$)) 

Repeat
 Event = WaitWindowEvent()
 Select Event
   Case #PB_Event_CloseWindow : Goto debut_programme
    Case #PB_Event_Gadget 
 Select EventGadget()
        
        Case 1 : 
        ;CloseFile(fichier$) ;****quitter
        DeleteFile(fichier$)
       Goto debut_programme
        
      Case 2 : 
        ;CloseFile(fichier$) ;*****répondre
        DeleteFile(fichier$)
        Goto Lance_Writer
        End
  
      EndSelect 
       EndSelect 
Until Event=#PB_Event_CloseWindow

End
;

;
;
;
;
The_end:
Resultat = RenameFile(adresse$+code$+"\on.txt", adresse$+code$+"\off.txt")  ;(dit au prog qu'on n'est plus connecté)
If resultat = 0
  MessageRequester("Msnger Alert", "Pb ferture prog", #MB_ICONERROR) ;(pb lui dire)
EndIf 
                            ;;****sauve param PosX et PosY fenetre
  OpenFile(0,"param.ini") 
  WriteStringN(0,Str(WindowX(0))) 
  WriteStringN(0,Str(WindowY(0))) 
  CloseFile(0) 
End
Répondre