ENREGISTRER TList DANS UN FICHIER

Résolu
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 - 3 août 2005 à 15:59
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 4 août 2005 à 16:15
Voila j'ai crée une Tlist associé a un Record pour une gestion de contact :

Voilà un exemple (bidon) :
/***********************************/

type
{ Structure pour les enregistrement de fichiers }
TContact = record // Mes contacts
nom : string;
prenom : string;
date : string;
profession : string;
taille : integer;
poids : integer;
NomEnfants : Array [0..10] of string;
end;
PContact = ^TContact;


TListContact = class(TList)
public
procedure Reset;
procedure Ajoute( snom : string; sprenom : string );
procedure Enleve( index : LongInt );
procedure Optimize;
function GetItem( const i: Integer ) : TContact;
end;

/***********************************/

PS : On remarquera que mon Record peut contenir des entiers, des chaines, des tableaux, des booleans, etc...

Ma question est simple j'aimerai enregistrer ma liste de contact dans un seul fichier et pouvoir la recupéré. Et oui une gestion de contact où on peux pas garder ses contacts .. c'est moche

Merci, Damien.

10 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
3 août 2005 à 16:20
salut,

il faut que tu passes par un enregistrement de tes records

tu peux faire

F:file of TContact

procedure enregistre;

begin

AssignFile(F1,'nomdufichier'); for i:=0 to TListContact .Count-1 do

begin

PContact :=TListContact .Items[i];

write(F1,PContact ^);

end;

closeFile(F1);

end;

pour lire tu fais

procedure lire;

var Nb:integer;

begin

AssignFile(F1',nomdufichier');

Reset(F1);

Nb:=filesize(F1);

for i:=1 to NB do

begin

newPContact );

ListePoints.Add(PContact );

read( F1,PContact ^);

end;



end

;bonne prog
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
3 août 2005 à 18:38
excuse moi j'ai oublie une instruction dans mon code

il fallait lire:

F1:file of TContact

procedure enregistre;

begin

AssignFile(F1,'nomdufichier');

rewrite(F1); // pour pouvoit ecrire dans le fichier

for i:=0 to TListContact .Count-1 do

begin

PContact :=TListContact .Items[i];

write(F1,PContact ^);

end;

closeFile(F1);// ferme le fichier en ecriture

end;

pour lire tu fais

procedure lire;

var Nb:integer;

begin

AssignFile(F1',nomdufichier');

Reset(F1);

Nb:=filesize(F1);

for i:=1 to NB do

begin

newPContact );

ListePoints.Add(PContact );

read( F1,PContact ^);

end;

closeFile(F1); // il vaut mieux fermer le fichier ICI

end;
3
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
4 août 2005 à 09:47
Heu j'vient de lire ton code, j'ai pas encore essayé car pour le moment j'peux pas, mais à première vu ta solution est un peu bancale non ? du moin ton code tel qui l'est ecrit là, ne fonctionnera pas !

En faite je chechait plus une solution orienté TfileStream ou un truc dans le genre qu'un simple Write dans une boucle.

Mais merci quand meme, c'est très sympa !
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
4 août 2005 à 10:37
salut,

c'est que la solution est banale mais je t'assure qu'elle fonctionne pour l'utiliser dans un de mes programme.

Maintenant si tu veux passer effectivement par un TfileStream .

C'est vrai pourquoi faire simple quand on peut faire compliqué!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
4 août 2005 à 10:52
Bon j'essaye et j'te dit :)

Merci.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
4 août 2005 à 11:14
salut,

d'ailleurs comme le code est un copie colle de mon code il en traine encore un morceau:

a la ligne:

ListePoints.Add(PContact );

il faut evidemment lire: ListContact.Add(PContact );
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
4 août 2005 à 11:25
Arf j'en chie avec ta methode j'ai des erreurs de compilations dans tout les sens :s
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
4 août 2005 à 14:01
çà marche

J'ai corriger pas mal de bug, qui venait entre autre de mon application, et j'ai integrer tout çà dans mon objet.

Sans toi j'y serai jamais arrivé

Merci jlen100.

Damien
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
4 août 2005 à 14:04
J'ai fait un truc comme çà, mias çà merite d'etre un peu revu.
J'ai des probleme de débordement, faut que je corrige çà aussi...

{ Enregistre la liste des contact }
procedure TListContact.Enregistre( Fichier : string );
var
F : File of TContact;
i : Integer;
begin
AssignFile(F, Fichier);
rewrite(F);


for i:=0 to ( Self.Count-1 ) do
begin
Write(F, TContact( Self.Items[i]^ ) );
end;


CloseFile(F);
end;


{ Ouvre la liste des contacts }
procedure TListContact.Ouvre( Fichier : string );
var
F : file of TContact;
TailleFichier : Integer;
i : Integer;
K : PContact;
begin
AssignFile(F, Fichier);
Reset(F);
TailleFichier := FileSize(F);


for i := 1 to TailleFichier do
begin
New(K);
Read(F, K^ );
Self.Add(K);
end;


CloseFile(F);
end;

++

Damien
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
4 août 2005 à 16:15
salut,

c'est vrai que dans mon appli il ne s'agissait pas d'une methoade de classe ce qui peut expliquer certains de tes problemes.

travaillant directement sur une liste et une variable record c'etait
plus simple,surtout que je n'utilsais qu'une fois ces procedure dans le
programme.

++
0
Rejoignez-nous