Page 2 sur 3

Publié : ven. 25/nov./2005 15:09
par Chris
maitre we a écrit :Oui , Dobro , c'est un peu dure ... Mais vue que c'est ce que je veu faire et que mon pere travail la-dedans ; je me dit que plus tôt je commencerai , mieu ce sera :D
C'est pas parce que ton père travaille la dedans que c'est par là qu'il faut commencer.

Faut commencer comme tout le monde, par le début :lol:

Publié : ven. 25/nov./2005 15:23
par maitre we
c'est ce que je veu faire plu-tard !!!!!! voila pourquoi je commence

Publié : ven. 25/nov./2005 15:52
par Backup
maitre we a écrit :Encor une question : [cette foi , je ne me croi plus chez Darti]


sa serai cool si quelqun pouvait m'expliqué comment je peu creer un bouton "suprimé" pour le programme "annuair" ...


Vous avez compris ou je doit mieu formuler ?
cette foi-ci c'est bon , c pas chez Darti :?

c'est quoi le programme "annuair" ?? 8O

Publié : ven. 25/nov./2005 15:53
par AWEAR
Je pense que c'est le tuto de Guimauve

Publié : ven. 25/nov./2005 16:05
par maitre we
annuaire téléphonique :

Code : Tout sélectionner

; Nom du projet : Annuaire téléphonique 
; Fichier : Source principal 
; Version du programme : 1.0.0 
; Programmation : OK 
; Programmé par : Guimauve 
; Date : 24-08-2005 
; Mise à jour : 24-08-2005 
; Codé pour PureBasic V3.94 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

IncludeFile "SqueletteAnnuaire.pb" 
IncludeFile "SqueletteMere.pb" 
IncludeFile "Constantes.pb" 
IncludeFile "Procédures.pb" 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Ouverture de la fenètre principale 

FenetreAnnuaire() 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; On vérifie si un annuaire existe. S'il n'y en 
; a pas, on va en créer un avant de continuer. 

CreerAnnuaireFarfelue(ProgParam) 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; On charge l'annuaire depuis le disque dur 

LoaderAnnuaire(ProgParam) 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; On affiche dès le départ le premier élement de 
; l'annuaire. 

PlugguageDepart() 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; On gère les gadgets et les commandes du USER 

Repeat 
  
  EventID = WaitWindowEvent() 
     
  Select EventID 
    
    Case #PB_EventGadget 
      
      Select EventGadgetID() 
        
        Case #ComboBox_ListePrenom_Nom 
          ChoisirContact(ProgParam) 
          
        Case #Btn_Precedent 
          DefilementContact(ProgParam, -1) 
          
        Case #Btn_Suivant 
          DefilementContact(ProgParam, 1) 
          
        Case #Btn_Nouveau 
          FenetreEditerContact(ProgParam, "Nouveau",0) 
          
        Case #Btn_Modifier 
          FenetreEditerContact(ProgParam, "Modifier",1) 
          
      EndSelect 
      
      ; Case #PB_EventMenu ; Il n'y a pas de menu déroulant pour le moment 
      ; Select EventMenuID() 
      ; EndSelect 

  EndSelect 
  
Until EventID = #PB_EventCloseWindow 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Avant de fermer le programme, on écrase le 
; vieux fichier pour avoir toujours une version 
; à jour de l'annuaire. 

SaverAnnuaire(ProgParam) 

End
constantes :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Nom du projet : Annuaire téléphonique 
; Fichier : Constantes, Tableaux, ListeChainées, ... 
; Version du programme : 0.0.0 
; Programmation : OK 
; Programmé par : Guimauve 
; Date : 24-08-2005 
; Mise à jour : 24-08-2005 
; Codé pour PureBasic V3.94 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Constantes pour les fenètres du programme 

Enumeration 
  
  #Main_Win 
  #Edit_Win 
  
  
EndEnumeration 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Constantes pour le Style des fenètres  

#Main_Win_Style = #PB_Window_ScreenCentered | #PB_Window_SystemMenu 
#Edit_Win_Style = #PB_Window_ScreenCentered | #PB_Window_SystemMenu 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Constantes pour les Gadgets  

Enumeration 
  
  #ComboBox_ListePrenom_Nom 
  #Btn_Precedent 
  #Btn_Suivant 
  #Btn_Modifier 
  #Btn_Nouveau 
  
  #Frame_Info_du_Champion 
  #Frame_Commentaire_du_Champion 
  
  #Text_NomChampion 
  #Text_PrenomChampion 
  #Text_NomVille 
  #Text_NoCivic 
  #Text_NomRue 
  #Text_CodePostal 
  #Text_Courriel 
  #Text_TelephoneMaison 
  #Text_TelephoneTravail 
  
  #String_NomChampion 
  #String_PrenomChampion 
  #String_NomVille 
  #String_NoCivic 
  #String_NomRue 
  #String_CodePostal 
  #String_Courriel 
  #String_TelephoneMaison 
  #String_TelephoneTravail 
  
  #Editor_Commentaire 
  
  #Text_EDIT_NomChampion 
  #Text_EDIT_PrenomChampion 
  #Text_EDIT_NomVille 
  #Text_EDIT_NoCivic 
  #Text_EDIT_NomRue 
  #Text_EDIT_CodePostal 
  #Text_EDIT_Courriel 
  #Text_EDIT_TelephoneMaison 
  #Text_EDIT_TelephoneTravail 
  
  #String_EDIT_NomChampion 
  #String_EDIT_PrenomChampion 
  #String_EDIT_NomVille 
  #String_EDIT_NoCivic 
  #String_EDIT_NomRue 
  #String_EDIT_CodePostal 
  #String_EDIT_Courriel 
  #String_EDIT_TelephoneMaison 
  #String_EDIT_TelephoneTravail 
  
  #Editor_EDIT_Commentaire 
  
  #Btn_EDIT_OK 
  #Btn_EDIT_ANNULER 
  
  #GUIFont 
  
EndEnumeration 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

If LoadFont(#GUIFont,"Arial",8,#PB_Font_Bold) 
  SetGadgetFont(#PB_Default, FontID()) 
EndIf 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Initialisation de la Structure mère du programme 

ProgParam.ProgAnnu 
SetProgAnnuNomFichier(ProgParam, "Mon Annuaire.ann") 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Énumération des constantes d'indexation du tableau >>>>> 

Enumeration 
  
  #TxtGUI_NomProgr 
  #TxtGUI_BtnPrecedent 
  #TxtGUI_BtnSuivant 
  #TxtGUI_BtnModifier 
  #TxtGUI_BtnNouveau 
  #TxtGUI_FrameInfo 
  #TxtGUI_Commentaire 
  #TxtGUI_NomChampion 
  #TxtGUI_PrenomChampion 
  #TxtGUI_NomVille 
  #TxtGUI_NoCivic 
  #TxtGUI_NomRue 
  #TxtGUI_CodePostal 
  #TxtGUI_Courriel 
  #TxtGUI_TelephoneMaison 
  #TxtGUI_TelephoneTravail 
  
  #TxtGUI_EditOk 
  #TxtGUI_EditAnnuler 
  
  #TexteGUI_dimsize 
  
EndEnumeration 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Déclaration du tableau >>>>> 

Dim TexteGUI.s(#TexteGUI_dimsize - 1) 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Initialisation du tableau >>>>> 

TexteGUI(#TxtGUI_NomProgr) = "Annuaire téléphonique Bastien \privé/" 
TexteGUI(#TxtGUI_BtnPrecedent) = "Précédent" 
TexteGUI(#TxtGUI_BtnSuivant) = "Suivant" 
TexteGUI(#TxtGUI_BtnModifier) = "Modifier" 
TexteGUI(#TxtGUI_BtnNouveau) = "Nouveau" 
TexteGUI(#TxtGUI_FrameInfo) = "Info sur la personne" 
TexteGUI(#TxtGUI_Commentaire) = "Commentaire sur la personne" 
TexteGUI(#TxtGUI_NomChampion) = "Nom :" 
TexteGUI(#TxtGUI_PrenomChampion) = "Prenom :" 
TexteGUI(#TxtGUI_NomVille) = "Ville :" 
TexteGUI(#TxtGUI_NoCivic) = "Telephone Portable :" 
TexteGUI(#TxtGUI_NomRue) = "Nom de la Rue :" 
TexteGUI(#TxtGUI_CodePostal) = "Code Postal :" 
TexteGUI(#TxtGUI_Courriel) = "Adresse E-Mail :" 
TexteGUI(#TxtGUI_TelephoneMaison) = "Telephone Maison :" 
TexteGUI(#TxtGUI_TelephoneTravail) = "Telephone Travail :" 
TexteGUI(#TxtGUI_EditOk) = "Ok" 
TexteGUI(#TxtGUI_EditAnnuler) = "Annuler" 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Création de la liste chainée de l'annuaire complet 

NewList MonAnnuaire.Annuaire() 

; <<<<<<<<<<<<<<<< 
; FIN DE FICHIER 
; <<<<<<<<<<<<<<<<
procédures

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Nom du projet : Annuaire téléphonique 
; Fichier : Procédures 
; Version du programme : 1.0.0 
; Programmation : OK 
; Programmé par : Guimauve 
; Date : 24-08-2005 
; Mise à jour : 24-08-2005 
; Codé pour PureBasic V3.94 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Procedure.l Defilement(Nombre.l, Minimum.l, Maximum.l, Increment.l) 
  
  Nombre + Increment 
  
  If Nombre > Maximum 
    Nombre = Minimum 
  EndIf 
  
  If Nombre < Minimum 
    Nombre = Maximum 
  EndIf 
  
  ProcedureReturn Nombre 
  
EndProcedure 

Procedure PluggerAdresseDansGUI(*AdresseA.Adresse) 
  
  SetGadgetText(#String_NomVille, GetAdresseVille(*AdresseA)) 
  SetGadgetText(#String_NoCivic, GetAdresseNoCivique(*AdresseA)) 
  SetGadgetText(#String_NomRue, GetAdresseRue(*AdresseA)) 
  SetGadgetText(#String_CodePostal, GetAdresseCodePostal(*AdresseA)) 
  
EndProcedure 

Procedure PluggerContactDansGUI(*AnnuaireA.Annuaire) 
  
  For GadgetID = #String_NomChampion To #Editor_Commentaire 
    SetGadgetText(GadgetID, "") 
  Next 
  
  SetGadgetText(#String_NomChampion, GetAnnuaireNom(*AnnuaireA)) 
  SetGadgetText(#String_PrenomChampion, GetAnnuairePrenom(*AnnuaireA)) 
  
  PluggerAdresseDansGUI(GetAnnuaireAdresseCivic(*AnnuaireA)) 
  
  SetGadgetText(#String_Courriel, GetAnnuaireCourriel(*AnnuaireA)) 
  SetGadgetText(#String_TelephoneMaison, GetAnnuaireTelephone01(*AnnuaireA)) 
  SetGadgetText(#String_TelephoneTravail, GetAnnuaireTelephone02(*AnnuaireA)) 
  
  SetGadgetText(#Editor_Commentaire,GetAnnuaireCommentaire(*AnnuaireA)) 
  
EndProcedure 

Procedure PlugguageDepart() 
  
  ; On fait un classement de la liste 
  
  SortStructuredList(MonAnnuaire(), 0, TrierPrenom(), #PB_Sort_String) 
  
  ClearGadgetItemList(#ComboBox_ListePrenom_Nom) 
  
  ForEach MonAnnuaire() 
    
    AddGadgetItem(#ComboBox_ListePrenom_Nom, -1, GetAnnuairePrenom(@MonAnnuaire())) 
    
  Next 
  
  ; On affiche le premier élément dans l'interface 
  SelectElement(MonAnnuaire(),0) 
  PluggerContactDansGUI(@MonAnnuaire()) 
  SetGadgetState(#ComboBox_ListePrenom_Nom,0) 
  
EndProcedure 

Procedure LoaderAnnuaire(*ObjetA.ProgAnnu) 
  
  If ReadFile(0, GetProgAnnuNomFichier(*ObjetA)) <> 0 
    
    Repeat 
      
      AddElement(MonAnnuaire()) 
      ReadAnnuaire(@MonAnnuaire()) 
      Compteur + 1 
      
    Until Eof(0) 
    
    SetProgAnnuNbContact(*ObjetA, Compteur-1) 
    
    CloseFile(0) 
    
  EndIf 
  
EndProcedure 

Procedure SaverAnnuaire(*ObjetA.ProgAnnu) 
  
  If CreateFile(0, GetProgAnnuNomFichier(*ObjetA)) 
    
    ForEach MonAnnuaire() 
      
      WriteAnnuaire(@MonAnnuaire()) 
      
    Next 
    
    CloseFile(0) 
  EndIf 
  
EndProcedure 

Procedure CreerAnnuaireFarfelue(*ObjetA.ProgAnnu) 
  
  If FileSize(GetProgAnnuNomFichier(*ObjetA)) = -1 
    
    ClearList(MonAnnuaire()) 
    
    ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    ; C'est pour générer un fichier farfelue si on n'en n'a pas. 
    
    AddElement(MonAnnuaire()) 
    UpdateAdresse(Tampon.Adresse,"Texas","3215","55th HighWay", "J0W 3P3") 
    UpdateAnnuaire(@MonAnnuaire(),"Runner","Road",Tampon,"roadrunner@superfast.com","123-4587","987-6543","Personnage de dessin animé. Il court très très vite.") 
    
    
    AddElement(MonAnnuaire()) 
    UpdateAdresse(Tampon.Adresse,"Texas","3225","55th HighWay", "J0W 3P7") 
    UpdateAnnuaire(@MonAnnuaire(),"Coyote","Vil",Tampon,"vilcoyote@superfast.com","569-3387","987-4443","Personnage de dessin animé. Il tente d'attaper Road Runner !") 
    
    ;SaverAnnuaire(*ObjetA) 
    
    SetProgAnnuNbContact(*ObjetA,1) 
    
  EndIf 
  
EndProcedure 

Procedure ChoisirContact(*ObjetA.ProgAnnu) 
  
  Index = GetGadgetState(#ComboBox_ListePrenom_Nom) 
  SelectElement(MonAnnuaire(),Index) 
  PluggerContactDansGUI(@MonAnnuaire()) 
  SetProgAnnuContactID(*ObjetA, Index) 
  
EndProcedure 

Procedure DefilementContact(*ObjetA.ProgAnnu, Direction.b) 
  
  
  Index = Defilement(GetProgAnnuContactID(*ObjetA), 0, GetProgAnnuNbContact(*ObjetA), Direction) 
  SetGadgetState(#ComboBox_ListePrenom_Nom,Index) 
  SelectElement(MonAnnuaire(),Index) 
  PluggerContactDansGUI(@MonAnnuaire()) 
  SetProgAnnuContactID(*ObjetA, Index) 
  
  
EndProcedure 

Procedure TransferInfo() 
  
  GadgetIDSource = #String_NomChampion 
  
  For GadgetID = #String_EDIT_NomChampion To #Editor_EDIT_Commentaire 
    
    SetGadgetText(GadgetID,GetGadgetText(GadgetIDSource)) 
    GadgetIDSource+1 
    
  Next 
  
EndProcedure 

Procedure EditionContact(*ObjetA.ProgAnnu,Mode.b) 
  
  Ville.s = GetGadgetText(#String_EDIT_NomVille) 
  NoCivique.s = GetGadgetText(#String_EDIT_NoCivic) 
  Rue.s = GetGadgetText(#String_EDIT_NomRue) 
  CodePostal.s = GetGadgetText(#String_EDIT_CodePostal) 
  
  UpdateAdresse(Tampon.Adresse,Ville, NoCivique, Rue, CodePostal) 
  Nom.s = GetGadgetText(#String_EDIT_NomChampion) 
  Prenom.s = GetGadgetText(#String_EDIT_PrenomChampion) 
  Courriel.s = GetGadgetText(#String_EDIT_Courriel) 
  Phone01.s = GetGadgetText(#String_EDIT_TelephoneMaison) 
  Phone02.s = GetGadgetText(#String_EDIT_TelephoneTravail) 
  Commentaire.s = GetGadgetText(#Editor_EDIT_Commentaire) 

  If Mode = 1 
    SelectElement(MonAnnuaire(), GetProgAnnuContactID(*ObjetA)) 
    UpdateAnnuaire(@MonAnnuaire(),Nom, Prenom,Tampon,Courriel, Phone01, Phone02, Commentaire) 
    
  Else 
    
    AddElement(MonAnnuaire()) 
    UpdateAnnuaire(@MonAnnuaire(),Nom, Prenom, Tampon,Courriel, Phone01, Phone02, Commentaire) 
    SetProgAnnuNbContact(*ObjetA,GetProgAnnuNbContact(*ObjetA)+1) 

  EndIf 
  
  PlugguageDepart() 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Procedure ButtonGadgetGroup(FirstButtonID, LastButtonID, X, Y, Width, Height, Gap_Between_Gadget) 
  
  For GadgetID = FirstButtonID To LastButtonID 
    ButtonGadget(GadgetID, X, Y, Width, Height, "") 
    X + Width + Gap_Between_Gadget 
  Next 
  
EndProcedure 

Procedure TextGadgetGroup(FirstTextID, LastTextID, X, Y, Width, Height, Gap_Between_Gadget) 
  
  For GadgetID = FirstTextID To LastTextID 
    TextGadget(GadgetID, X, Y, Width, Height, "",#PB_Text_Center) 
    Y + Height + Gap_Between_Gadget 
  Next 
  
EndProcedure 

Procedure StringGadgetGroup(FirstStringID, LastStringID, X, Y, Width, Height, Gap_Between_Gadget) 
  
  For GadgetID = FirstStringID To LastStringID 
    StringGadget(GadgetID, X, Y, Width, Height, "",#PB_String_ReadOnly) 
    Y + Height + Gap_Between_Gadget 
  Next 
  
EndProcedure 

Procedure StringGadgetGroupSTD(FirstStringID, LastStringID, X, Y, Width, Height, Gap_Between_Gadget) 
  
  For GadgetID = FirstStringID To LastStringID 
    StringGadget(GadgetID, X, Y, Width, Height, "") 
    Y + Height + Gap_Between_Gadget 
  Next 
  
EndProcedure 

Procedure EditorGadgetReadOnly(GadgetID.l) 
  SendMessage_(GadgetID(GadgetID), #EM_SETOPTIONS, #ECOOP_OR, #ECO_READONLY) 
EndProcedure 

Procedure EditorGadgetBackColor(GadgetID.l, Color.l) 
  SendMessage_(GadgetID(GadgetID), #EM_SETBKGNDCOLOR, 0, Color) 
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Procedure FenetreAnnuaire() 
  
  If OpenWindow(#Main_Win, 0, 0, 600, 480, #Main_Win_Style, TexteGUI(#TxtGUI_NomProgr)) <> 0 
    
    If CreateGadgetList(WindowID(#Main_Win)) <> 0 
      
      ComboBoxGadget(#ComboBox_ListePrenom_Nom,5,5,280,150) 
      ButtonGadgetGroup(#Btn_Precedent, #Btn_Nouveau, 295, 5, 70, 25, 5) 
      
      Frame3DGadget(#Frame_Info_du_Champion,5,35,590,250,"") 
      TextGadgetGroup(#Text_NomChampion,#Text_TelephoneTravail, 10, 55, 125, 20, 5) 
      StringGadgetGroup(#String_NomChampion,#String_TelephoneTravail, 140, 55, 440, 20, 5) 
      
      Frame3DGadget(#Frame_Commentaire_du_Champion,5,290,590,185,"") 
      
      EditorGadget(#Editor_Commentaire,10,310,580,160) 
      EditorGadgetReadOnly(#Editor_Commentaire) 
      EditorGadgetBackColor(#Editor_Commentaire, GetSysColor_(#COLOR_3DFACE)) 
      
    EndIf 
    
  EndIf 
  
  TxtGUI_Index = #TxtGUI_BtnPrecedent 
  
  For GadgetID = #Btn_Precedent To #Text_TelephoneTravail 
    
    SetGadgetText(GadgetID,TexteGUI(TxtGUI_Index)) 
    TxtGUI_Index+1 
    
  Next 
  
EndProcedure 


Procedure FenetreEditerContact(*ObjetA.ProgAnnu, Titre.s, Mode.b) 
  
  HideWindow(#Main_Win,1) 
  
  If OpenWindow(#Edit_Win, 0, 0, 500, 480, #Edit_Win_Style, Titre) 
    
    If CreateGadgetList(WindowID(#Edit_Win)) 
      
      TextGadgetGroup(#Text_EDIT_NomChampion,#Text_EDIT_TelephoneTravail, 5, 5, 125, 20, 5) 
      StringGadgetGroupSTD(#String_EDIT_NomChampion,#String_EDIT_TelephoneTravail, 140, 5, 350, 20, 5) 
      EditorGadget(#Editor_EDIT_Commentaire,5,GadgetY(#String_EDIT_TelephoneTravail)+30,490,200) 
      
      ButtonGadgetGroup(#Btn_EDIT_OK, #Btn_EDIT_ANNULER, 275, 445, 100, 25, 5) 
      SetGadgetText(#Btn_EDIT_OK,TexteGUI(#TxtGUI_EditOk)) 
      SetGadgetText(#Btn_EDIT_ANNULER,TexteGUI(#TxtGUI_EditAnnuler)) 
      
    EndIf 
    
  EndIf 
  
  TxtGUI_Index = #TxtGUI_NomChampion 
  
  For GadgetID = #Text_EDIT_NomChampion To #Text_EDIT_TelephoneTravail 
    
    SetGadgetText(GadgetID,TexteGUI(TxtGUI_Index)) 
    TxtGUI_Index+1 
    
  Next 
  
  If Mode = 1 
    TransferInfo() 
  EndIf 
  
  Repeat 
    
    EventID2 = WaitWindowEvent() 
    
    If EventID2 = #PB_EventGadget 
      Select EventGadgetID() ; La gestion des évenements                    
        
        Case #Btn_EDIT_OK 
          EditionContact(*ObjetA.ProgAnnu,Mode.b) 
          EventID2 = #PB_EventCloseWindow 
          
        Case #Btn_EDIT_ANNULER 
          EventID2 = #PB_EventCloseWindow 
          
      EndSelect 
    EndIf 
  Until EventID2 = #PB_EventCloseWindow 
  
  HideWindow(#Main_Win,0) 
  CloseWindow(#Edit_Win) 
  
EndProcedure
squelettes annuaire :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER 
; À MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE ! 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Code généré par : Éditeur de données 
; Nom du projet : Annuaire téléphonique 
; Fichier : Structure et Méthodes de l'annuaire 
; Version du fichier : 0.0.0 
; Programmation : À vérifier 
; Programmé par : Guimauve 
; Date : 24-08-2005 
; Mise à jour : 24-08-2005 
; Codé pour PureBasic V3.94 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Read & Write Binary String <<<<< 

Procedure WriteBinaryString(String.s) 
  
  Length.l = Len(String) 
  WriteLong(Length) 
  WriteData(String, Length) 
  
EndProcedure 

Procedure.s ReadBinaryString() 
  
   Length.l = ReadLong() 
   String.s = Space(Length) 
   ReadData(String, Length) 
   
   ProcedureReturn String 
 EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Déclaration de la Structure >>>>> 

Structure Adresse 
  
  Ville.s 
  NoCivique.s 
  Rue.s 
  CodePostal.s 
  
EndStructure 

; <<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les mutateurs >>>>> 

Procedure SetAdresseVille(*AdresseA.Adresse, Ville.s) 
  
  *AdresseA\Ville = Ville 
  
EndProcedure 

Procedure SetAdresseNoCivique(*AdresseA.Adresse, NoCivique.s) 
  
  *AdresseA\NoCivique = NoCivique 
  
EndProcedure 

Procedure SetAdresseRue(*AdresseA.Adresse, Rue.s) 
  
  *AdresseA\Rue = Rue 
  
EndProcedure 

Procedure SetAdresseCodePostal(*AdresseA.Adresse, CodePostal.s) 
  
  *AdresseA\CodePostal = CodePostal 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les observateurs >>>>> 

Procedure.s GetAdresseVille(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\Ville 
  
EndProcedure 

Procedure.s GetAdresseNoCivique(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\NoCivique 
  
EndProcedure 

Procedure.s GetAdresseRue(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\Rue 
  
EndProcedure 

Procedure.s GetAdresseCodePostal(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\CodePostal 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< L'opérateur Update >>>>> 

Procedure UpdateAdresse(*AdresseA.Adresse, Ville.s, NoCivique.s, Rue.s, CodePostal.s) 
  
  SetAdresseVille(*AdresseA, Ville) 
  SetAdresseNoCivique(*AdresseA, NoCivique) 
  SetAdresseRue(*AdresseA, Rue) 
  SetAdresseCodePostal(*AdresseA, CodePostal) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< L'opérateur Equal >>>>> 

Procedure EqualAdresse(*AdresseA.Adresse, *AdresseB.Adresse) 
  
  SetAdresseVille(*AdresseA, GetAdresseVille(*AdresseB)) 
  SetAdresseNoCivique(*AdresseA, GetAdresseNoCivique(*AdresseB)) 
  SetAdresseRue(*AdresseA, GetAdresseRue(*AdresseB)) 
  SetAdresseCodePostal(*AdresseA, GetAdresseCodePostal(*AdresseB)) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Lecture fichier Binaire >>>>> 

Procedure ReadAdresse(*AdresseA.Adresse) 
  
  SetAdresseVille(*AdresseA, ReadBinaryString()) 
  SetAdresseNoCivique(*AdresseA, ReadBinaryString()) 
  SetAdresseRue(*AdresseA, ReadBinaryString()) 
  SetAdresseCodePostal(*AdresseA, ReadBinaryString()) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Écriture fichier Binaire >>>>> 

Procedure WriteAdresse(*AdresseA.Adresse) 
  
  WriteBinaryString(GetAdresseVille(*AdresseA)) 
  WriteBinaryString(GetAdresseNoCivique(*AdresseA)) 
  WriteBinaryString(GetAdresseRue(*AdresseA)) 
  WriteBinaryString(GetAdresseCodePostal(*AdresseA)) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Déclaration de la Structure >>>>> 

Structure Annuaire 

  Nom.s 
  Prenom.s 
  AdresseCivic.Adresse 
  Courriel.s 
  Telephone01.s 
  Telephone02.s 
  Commentaire.s 

EndStructure 

; <<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les mutateurs >>>>> 

Procedure SetAnnuaireNom(*AnnuaireA.Annuaire, Nom.s) 

  *AnnuaireA\Nom = Nom 

EndProcedure 

Procedure SetAnnuairePrenom(*AnnuaireA.Annuaire, Prenom.s) 

  *AnnuaireA\Prenom = Prenom 

EndProcedure 

Procedure SetAnnuaireAdresseCivic(*AnnuaireA.Annuaire, *AdresseCivic.Adresse) 

  EqualAdresse(*AnnuaireA\AdresseCivic, *AdresseCivic) 

EndProcedure 

Procedure SetAnnuaireCourriel(*AnnuaireA.Annuaire, Courriel.s) 

  *AnnuaireA\Courriel = Courriel 

EndProcedure 

Procedure SetAnnuaireTelephone01(*AnnuaireA.Annuaire, Telephone01.s) 

  *AnnuaireA\Telephone01 = Telephone01 

EndProcedure 

Procedure SetAnnuaireTelephone02(*AnnuaireA.Annuaire, Telephone02.s) 

  *AnnuaireA\Telephone02 = Telephone02 

EndProcedure 

Procedure SetAnnuaireCommentaire(*AnnuaireA.Annuaire, Commentaire.s) 

  *AnnuaireA\Commentaire = Commentaire 

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les observateurs >>>>> 

Procedure.s GetAnnuaireNom(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Nom 

EndProcedure 

Procedure.s GetAnnuairePrenom(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Prenom 

EndProcedure 

Procedure GetAnnuaireAdresseCivic(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\AdresseCivic 

EndProcedure 

Procedure.s GetAnnuaireCourriel(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Courriel 

EndProcedure 

Procedure.s GetAnnuaireTelephone01(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Telephone01 

EndProcedure 

Procedure.s GetAnnuaireTelephone02(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Telephone02 

EndProcedure 

Procedure.s GetAnnuaireCommentaire(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Commentaire 

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< L'opérateur Update >>>>> 

Procedure UpdateAnnuaire(*AnnuaireA.Annuaire, Nom.s, Prenom.s, *AdresseCivic.Adresse, Courriel.s, Telephone01.s, Telephone02.s, Commentaire.s) 

    SetAnnuaireNom(*AnnuaireA, Nom) 
    SetAnnuairePrenom(*AnnuaireA, Prenom) 
    SetAnnuaireAdresseCivic(*AnnuaireA, *AdresseCivic) 
    SetAnnuaireCourriel(*AnnuaireA, Courriel) 
    SetAnnuaireTelephone01(*AnnuaireA, Telephone01) 
    SetAnnuaireTelephone02(*AnnuaireA, Telephone02) 
    SetAnnuaireCommentaire(*AnnuaireA, Commentaire) 

EndProcedure 


; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Lecture fichier Binaire >>>>> 

Procedure ReadAnnuaire(*AnnuaireA.Annuaire) 

  SetAnnuaireNom(*AnnuaireA, ReadBinaryString()) 
  SetAnnuairePrenom(*AnnuaireA, ReadBinaryString()) 
  ReadAdresse(Empty_Buffer_AdresseCivic.Adresse) 
  SetAnnuaireAdresseCivic(*AnnuaireA, Empty_Buffer_AdresseCivic) 

  SetAnnuaireCourriel(*AnnuaireA, ReadBinaryString()) 
  SetAnnuaireTelephone01(*AnnuaireA, ReadBinaryString()) 
  SetAnnuaireTelephone02(*AnnuaireA, ReadBinaryString()) 
  SetAnnuaireCommentaire(*AnnuaireA, ReadBinaryString()) 

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Écriture fichier Binaire >>>>> 

Procedure WriteAnnuaire(*AnnuaireA.Annuaire) 

  WriteBinaryString(GetAnnuaireNom(*AnnuaireA)) 
  WriteBinaryString(GetAnnuairePrenom(*AnnuaireA)) 
  WriteAdresse(GetAnnuaireAdresseCivic(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireCourriel(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireTelephone01(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireTelephone02(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireCommentaire(*AnnuaireA)) 

EndProcedure 


; <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< OffSET du Prénom >>>>> 

Procedure TrierPrenom() 
  
  ProcedureReturn OffsetOf(Annuaire\Prenom) 
  
EndProcedure 
squellette mere :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER 
; À MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE ! 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Code généré par : Éditeur de données 
; Nom du projet : Annuaire téléphonique 
; Fichier : Structure et Méthodes de l'annuaire 
; Version du fichier : 0.0.0 
; Programmation : À vérifier 
; Programmé par : Guimauve 
; Date : 24-08-2005 
; Mise à jour : 24-08-2005 
; Codé pour PureBasic V3.94 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Read & Write Binary String <<<<< 

Procedure WriteBinaryString(String.s) 
  
  Length.l = Len(String) 
  WriteLong(Length) 
  WriteData(String, Length) 
  
EndProcedure 

Procedure.s ReadBinaryString() 
  
   Length.l = ReadLong() 
   String.s = Space(Length) 
   ReadData(String, Length) 
   
   ProcedureReturn String 
 EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Déclaration de la Structure >>>>> 

Structure Adresse 
  
  Ville.s 
  NoCivique.s 
  Rue.s 
  CodePostal.s 
  
EndStructure 

; <<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les mutateurs >>>>> 

Procedure SetAdresseVille(*AdresseA.Adresse, Ville.s) 
  
  *AdresseA\Ville = Ville 
  
EndProcedure 

Procedure SetAdresseNoCivique(*AdresseA.Adresse, NoCivique.s) 
  
  *AdresseA\NoCivique = NoCivique 
  
EndProcedure 

Procedure SetAdresseRue(*AdresseA.Adresse, Rue.s) 
  
  *AdresseA\Rue = Rue 
  
EndProcedure 

Procedure SetAdresseCodePostal(*AdresseA.Adresse, CodePostal.s) 
  
  *AdresseA\CodePostal = CodePostal 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les observateurs >>>>> 

Procedure.s GetAdresseVille(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\Ville 
  
EndProcedure 

Procedure.s GetAdresseNoCivique(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\NoCivique 
  
EndProcedure 

Procedure.s GetAdresseRue(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\Rue 
  
EndProcedure 

Procedure.s GetAdresseCodePostal(*AdresseA.Adresse) 
  
  ProcedureReturn *AdresseA\CodePostal 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< L'opérateur Update >>>>> 

Procedure UpdateAdresse(*AdresseA.Adresse, Ville.s, NoCivique.s, Rue.s, CodePostal.s) 
  
  SetAdresseVille(*AdresseA, Ville) 
  SetAdresseNoCivique(*AdresseA, NoCivique) 
  SetAdresseRue(*AdresseA, Rue) 
  SetAdresseCodePostal(*AdresseA, CodePostal) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< L'opérateur Equal >>>>> 

Procedure EqualAdresse(*AdresseA.Adresse, *AdresseB.Adresse) 
  
  SetAdresseVille(*AdresseA, GetAdresseVille(*AdresseB)) 
  SetAdresseNoCivique(*AdresseA, GetAdresseNoCivique(*AdresseB)) 
  SetAdresseRue(*AdresseA, GetAdresseRue(*AdresseB)) 
  SetAdresseCodePostal(*AdresseA, GetAdresseCodePostal(*AdresseB)) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Lecture fichier Binaire >>>>> 

Procedure ReadAdresse(*AdresseA.Adresse) 
  
  SetAdresseVille(*AdresseA, ReadBinaryString()) 
  SetAdresseNoCivique(*AdresseA, ReadBinaryString()) 
  SetAdresseRue(*AdresseA, ReadBinaryString()) 
  SetAdresseCodePostal(*AdresseA, ReadBinaryString()) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Écriture fichier Binaire >>>>> 

Procedure WriteAdresse(*AdresseA.Adresse) 
  
  WriteBinaryString(GetAdresseVille(*AdresseA)) 
  WriteBinaryString(GetAdresseNoCivique(*AdresseA)) 
  WriteBinaryString(GetAdresseRue(*AdresseA)) 
  WriteBinaryString(GetAdresseCodePostal(*AdresseA)) 
  
EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Déclaration de la Structure >>>>> 

Structure Annuaire 

  Nom.s 
  Prenom.s 
  AdresseCivic.Adresse 
  Courriel.s 
  Telephone01.s 
  Telephone02.s 
  Commentaire.s 

EndStructure 

; <<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les mutateurs >>>>> 

Procedure SetAnnuaireNom(*AnnuaireA.Annuaire, Nom.s) 

  *AnnuaireA\Nom = Nom 

EndProcedure 

Procedure SetAnnuairePrenom(*AnnuaireA.Annuaire, Prenom.s) 

  *AnnuaireA\Prenom = Prenom 

EndProcedure 

Procedure SetAnnuaireAdresseCivic(*AnnuaireA.Annuaire, *AdresseCivic.Adresse) 

  EqualAdresse(*AnnuaireA\AdresseCivic, *AdresseCivic) 

EndProcedure 

Procedure SetAnnuaireCourriel(*AnnuaireA.Annuaire, Courriel.s) 

  *AnnuaireA\Courriel = Courriel 

EndProcedure 

Procedure SetAnnuaireTelephone01(*AnnuaireA.Annuaire, Telephone01.s) 

  *AnnuaireA\Telephone01 = Telephone01 

EndProcedure 

Procedure SetAnnuaireTelephone02(*AnnuaireA.Annuaire, Telephone02.s) 

  *AnnuaireA\Telephone02 = Telephone02 

EndProcedure 

Procedure SetAnnuaireCommentaire(*AnnuaireA.Annuaire, Commentaire.s) 

  *AnnuaireA\Commentaire = Commentaire 

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Les observateurs >>>>> 

Procedure.s GetAnnuaireNom(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Nom 

EndProcedure 

Procedure.s GetAnnuairePrenom(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Prenom 

EndProcedure 

Procedure GetAnnuaireAdresseCivic(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\AdresseCivic 

EndProcedure 

Procedure.s GetAnnuaireCourriel(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Courriel 

EndProcedure 

Procedure.s GetAnnuaireTelephone01(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Telephone01 

EndProcedure 

Procedure.s GetAnnuaireTelephone02(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Telephone02 

EndProcedure 

Procedure.s GetAnnuaireCommentaire(*AnnuaireA.Annuaire) 

  ProcedureReturn *AnnuaireA\Commentaire 

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< L'opérateur Update >>>>> 

Procedure UpdateAnnuaire(*AnnuaireA.Annuaire, Nom.s, Prenom.s, *AdresseCivic.Adresse, Courriel.s, Telephone01.s, Telephone02.s, Commentaire.s) 

    SetAnnuaireNom(*AnnuaireA, Nom) 
    SetAnnuairePrenom(*AnnuaireA, Prenom) 
    SetAnnuaireAdresseCivic(*AnnuaireA, *AdresseCivic) 
    SetAnnuaireCourriel(*AnnuaireA, Courriel) 
    SetAnnuaireTelephone01(*AnnuaireA, Telephone01) 
    SetAnnuaireTelephone02(*AnnuaireA, Telephone02) 
    SetAnnuaireCommentaire(*AnnuaireA, Commentaire) 

EndProcedure 


; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Lecture fichier Binaire >>>>> 

Procedure ReadAnnuaire(*AnnuaireA.Annuaire) 

  SetAnnuaireNom(*AnnuaireA, ReadBinaryString()) 
  SetAnnuairePrenom(*AnnuaireA, ReadBinaryString()) 
  ReadAdresse(Empty_Buffer_AdresseCivic.Adresse) 
  SetAnnuaireAdresseCivic(*AnnuaireA, Empty_Buffer_AdresseCivic) 

  SetAnnuaireCourriel(*AnnuaireA, ReadBinaryString()) 
  SetAnnuaireTelephone01(*AnnuaireA, ReadBinaryString()) 
  SetAnnuaireTelephone02(*AnnuaireA, ReadBinaryString()) 
  SetAnnuaireCommentaire(*AnnuaireA, ReadBinaryString()) 

EndProcedure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Écriture fichier Binaire >>>>> 

Procedure WriteAnnuaire(*AnnuaireA.Annuaire) 

  WriteBinaryString(GetAnnuaireNom(*AnnuaireA)) 
  WriteBinaryString(GetAnnuairePrenom(*AnnuaireA)) 
  WriteAdresse(GetAnnuaireAdresseCivic(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireCourriel(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireTelephone01(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireTelephone02(*AnnuaireA)) 
  WriteBinaryString(GetAnnuaireCommentaire(*AnnuaireA)) 

EndProcedure 


; <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< OffSET du Prénom >>>>> 

Procedure TrierPrenom() 
  
  ProcedureReturn OffsetOf(Annuaire\Prenom) 
  
EndProcedure 

Publié : ven. 25/nov./2005 16:18
par Cls
Pour protéger ta base, j'ai une solution à te proposer mais elle n'est pas évidente si tu débutes.
Je t'explique quand même :

Il faut que ton fichier annuaire ait une extension spéciale (par exemple '.anu', vérifie qu'elle ne soit pas utilisée).
Ensuite tu vas dans la base de registre et tu associes l'extension '.anu' avec le fichier que tu vas créer et qui va demander un mot de passe pour l'ouverture. Il faut modifier les clefs suivantes dans la BDR :

[pour l'extension .anu]
HKEY_CLASSES_ROOT\.anu "(par défaut)" "anufile"
puis
HKEY_CLASSES_ROOT\anufile\DefaultIcon "(par défaut)" "%1"
HKEY_CLASSES_ROOT\anufile\shell\open\command "(par défaut)" "TonProgramme %1" %*

Si tu ne veux pas aller fouiner dans la BDR, tu peux également créer ton '.anu', faire un click droit sur ton fichier, et sélectionner le menu "Ouvrir avec..." ou "Ouvrir", s'il ne peut pas l'ouvrir il te proposera de lier cette extension avec le fichier de ton choix. Ici, TonProgramme.

Ton programme (nommé ici TonProgramme!) doit alors récupérer les paramètres passés à ton fichier (gràca à la fonction ProgramParameter()).
Si le mdp saisit est correct tu ouvres le fichier, sinon tu fais ce que tu veux !

Voila ce que je peux te proposer, mais il y a peut -etre plus simple...

Publié : ven. 25/nov./2005 16:38
par Cls
Voila un debut de code si ca peut t'aider... non testé par contre.

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("Mot de passe requis", "Veuillez entrer un mdp pour accéder aux infos", "")

If pass = "mot2passe"
  MessageRequester("","Bien joué !")
Else
  MessageRequester("", "Dommage...")
  End
EndIf

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

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

RunProgram("notepad.exe", args, "")

Publié : ven. 25/nov./2005 16:40
par Chris
Tout ça pour un simple annuaire! 8O

Bah... m'étonne plus qu'il soit poursuivi par le KGB, l'Guimauve :lol:

Publié : ven. 25/nov./2005 16:48
par Cls
Ca c'est sur, c'est bien compliqué pour l'utilité que ca doit avoir... :)

Publié : ven. 25/nov./2005 16:55
par maitre we
merci beaucoup Cls ... Mais c'est quoi le MDP de base :? (excusé moi , je suis pas tre tre doué ... vous l'avez remarqué :P )

Publié : ven. 25/nov./2005 16:57
par AWEAR
C'est mot2passe :D

Publié : ven. 25/nov./2005 17:03
par Cls
:) Oui ! Tu commences la programmation depuis quand we ?

Publié : ven. 25/nov./2005 17:10
par maitre we
heu ... 1semaine :?

Publié : ven. 25/nov./2005 17:17
par Cls
Essaie des choses simples avant de t'attaquer à du code barbare : tu vas être dégouté sinon, et c'est pas le but ! PureBasic est ton premier langage ? (quel perspicacité)

Publié : ven. 25/nov./2005 17:20
par Chris
Cls a écrit :Essaie des choses simples avant de t'attaquer à du code barbare : tu vas être dégouté sinon, et c'est pas le but ! PureBasic est ton premier langage ? (quel perspicacité)
Ca va plaire à Guimauve, ça :lol:

(Ceci dit, je suis persuadé qu'on peut faire la même chose en moins de 250 lignes)