program facebook_non_teste;
{$APPTYPE CONSOLE}
uses
SysUtils;
Type
//pointeur pointant vers la liste de groupes d'un utilisateur
//T_ptr_groupe:^T_grp;
//T_groupe:record
//titre:string;
//membres:T_ptr_mbr;
//mess:T_ptr;mess;
//suivant:T_ptr_grp;
//end;
//pointeur permettant de dresser la liste des membres d'un groupe
//T_ptr_mbr:^T_mbr;
//T_mbr:record
//nom:string
//profil:T_ptr_profil;
//suivant:T_ptr_mbr;
//end;
// pointeur pointant sur la liste de tous les groupes du programme
//T_ptr_grp:^T_grp;
//T_grp:record
//titre:string;
//membres:T_ptr_mbr;
//mess:T_mess;
//suivant:T_ptr_grp;
//end;
//pointeur pointant sur la liste des messages d'un utilisateur ou d'un groupe
//T_ptr_mess:^T_mess;
//T_mess:record
//numero:integer;
//date:string;
//objet:string;
//emetteur:string;
//corps:string;
//end;
//pointeur pointant sur la liste de tous les profils du programme
T_ptr_profil=^T_profil;
T_ptr_amis=^T_amis;
T_profil=record
nom:string;
prenom:string;
//age:integer;
//sexe:char;
//ville:string;
//pays:string;
mdp:string;
amis:T_ptr_amis;
//groupe:T_ptr_groupe;
//mess:T_ptr_mess;
suivant:T_ptr_profil;
end;
//pointeur pointant sur la liste d'amis d'une personne
T_amis=record
nom:string;
profil:T_ptr_profil;
suivant:T_ptr_amis;
end;
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////PROCEDURES//////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure INITIALISER_LO_PROFIL ( var ptr_deb_LO_profil:T_ptr_profil);
begin
ptr_deb_LO_profil:=NIL;
end;
////////////////////////////////////////////////////////////////////////////////
procedure CHARGEMENT_CREATION_LISTE_PROFIL( fichier_p_physique:string; var ptr_deb_LO_profil:T_ptr_profil);
var
fichier_p_logique:textfile;
//Fichier logique contenant les informations des membres
info:string;
ptr_new:T_ptr_profil;
ptr_ami_nouveau:T_ptr_amis;
ptr_courant: T_ptr_amis;
ptr_courant_profil:T_ptr_profil;
begin
// Association du fichier logique au fichier physique
assignfile( fichier_p_logique, fichier_p_physique);
//Ouverture en écriture du fichier
rewrite ( fichier_p_logique);
info:='0';
//Tant que l'on est pas arrivé à la fin du fichier texte
while not EOF(fichier_p_logique) and (info<>'END') do
begin
// Tant qu'on reste dans les informations d'un membre
new(ptr_new);
ptr_new^.suivant:=NIL;
readln(fichier_p_logique,info);
ptr_new^.nom:=info;
readln(fichier_p_logique,info);
ptr_new^.prenom:=info;
readln(fichier_p_logique,info);
ptr_new^.mdp:=info;
readln(fichier_p_logique,info);
//Normalement info= amis
readln(fichier_p_logique,info);
if (info<> 'fin ami')
// alors la liste existe
then
begin
new(ptr_ami_nouveau);
ptr_ami_nouveau^.suivant:=NIL;
ptr_ami_nouveau^.nom:=info;
ptr_new^.amis:=ptr_ami_nouveau;
ptr_courant:=ptr_ami_nouveau;
readln(fichier_p_logique,info);
ptr_ami_nouveau:=NIL;
while (info <> 'fin ami') do
// si la liste comporte plus qu'un ami
begin
new(ptr_ami_nouveau);
ptr_ami_nouveau^.suivant:=NIL;
ptr_ami_nouveau^.nom:=info;
ptr_courant^.suivant:=ptr_ami_nouveau;
ptr_courant:=ptr_ami_nouveau;
ptr_ami_nouveau:=NIL;
readln(fichier_p_logique,info);
end;
end;
ptr_deb_LO_profil:=ptr_new;
ptr_courant_profil:=ptr_deb_LO_profil;
ptr_new:=NIL;
readln(fichier_p_logique,info);
while (info<>'*') do
begin
new(ptr_new);
ptr_new^.suivant:=NIL;
readln(fichier_p_logique,info);
ptr_new^.nom:=info;
readln(fichier_p_logique,info);
ptr_new^.prenom:=info;
readln(fichier_p_logique,info);
ptr_new^.mdp:=info;
readln(fichier_p_logique,info);
//Normalement info= amis
readln(fichier_p_logique,info);
if (info<> 'fin ami')
// alors la liste existe
then
begin
new(ptr_ami_nouveau);
ptr_ami_nouveau^.suivant:=NIL;
ptr_ami_nouveau^.nom:=info;
ptr_new^.amis:=ptr_ami_nouveau;
ptr_courant:=ptr_ami_nouveau;
readln(fichier_p_logique,info);
ptr_ami_nouveau:=NIL;
while (info <> 'fin ami') do
// si la liste comporte plus qu'un ami
begin
new(ptr_ami_nouveau);
ptr_ami_nouveau^.suivant:=NIL;
ptr_ami_nouveau^.nom:=info;
ptr_courant^.suivant:=ptr_ami_nouveau;
ptr_courant:=ptr_ami_nouveau;
ptr_ami_nouveau:=NIL;
readln(fichier_p_logique,info);
end;
//normalement info=*
end;
ptr_courant_profil^.suivant:=ptr_new;
ptr_courant_profil:=ptr_new;
ptr_new:=NIL;
end;
readln(fichier_p_logique,info);
end;
end;
////////////////////////////////////////////////////////////////////////////////
Procedure CREER_VD_INSCRIPTION(var ptr_new_p : T_ptr_profil);
{Retourne l'adresse de l'espace mémoire alloué pour la VD }
//PE : informations de l'utilisateurs
//PS : une variable dynamique contenant toutes les informations des membres
var
info,mdp:string;
Begin
//Appel à la procédure " new " pour allouer un espace mémoire
NEW(ptr_new_p);
//Remplissage de la VD
writeln('Entrez votre nom');
readln(info);
ptr_new_p^.nom:=info;
writeln('Entrez votre prenom');
readln(info);
ptr_new_p^.prenom:=info;
//writeln('Entrez votre age');
//read(age);
//ptr_new_p^.age:=age;
//writeln('Entrez votre sexe (F/H)')
//read(sexe);
//ptr_new_p^.sexe:=sexe;
//writeln('Entrez votre ville');
//read(ville);
//ptr_new_p^.ville:=ville;
//writeln('Entrez votre pays');
//read(pays);
//ptr_new_p^.pays:=pays;
writeln('Entrez votre mot de passe');
readln(mdp);
ptr_new_p^.mdp:=mdp;
ptr_new_p^.amis:=NIL;
ptr_new_p^.suivant:=NIL;
end;
////////////////////////////////////////////////////////////////////////////////
Procedure AFFICHER_VD(ptr_new_p:T_ptr_profil);
{Affichage des éléments d'une VD d'un membre}
//PE : pointeur de la VD
//PS : aucun
Begin
writeln(ptr_new_p^.nom);
writeln(ptr_new_p^.prenom);
writeln(ptr_new_p^.mdp);
readln;
end;
////////////////////////////////////////////////////////////////////////////////
procedure AFFICHER_SDD(ptr_deb_LO_profil:T_ptr_profil);
//impression des informations de tous les éléments de la liste
//PE : les éléments de la liste
//PS : aucun
VAR
//Pointeur pour balayer la SDD
ptr_courant:T_ptr_profil;
begin
ptr_courant:=ptr_deb_LO_profil;
//Cas d'une SDD vide
if ptr_courant=NIL
then
writeln('la SDD est vide')
//Cas d'une SDD remplie
else
begin
repeat
//Appel à la procédure d'affichage de VD
AFFICHER_VD(ptr_courant);
writeln;
//On passe à la VD suivante
ptr_courant:=ptr_courant^.suivant;
until (ptr_courant=NIL);
end;
readln;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////Programme principal//////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
VAR
ptr_nouveau:T_ptr_profil;
ptr_debut_lo_profil:T_ptr_profil;
fich_p_physique:string;
begin
INITIALISER_LO_PROFIL(ptr_debut_lo_profil);
CHARGEMENT_CREATION_LISTE_PROFIL( fich_p_physique, ptr_debut_lo_profil);
AFFICHER_SDD(ptr_debut_lo_profil);
readln;
end.
bonjour, je rencontre un problème lors de l'implémentation de mon programme. Je dois reproduire une version plus facile de facebook. Je sauvegarde les informations des membres dans un fichier texte. Mais le chargement de celui ci en début de programme ne fonctionne pas. pourriez vous m'aider?
je vous join ci dessous le contenu à mettre dans un fichier nommé fich_p_physique.txt