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