ENREGISTRER TList DANS UN FICHIER [Résolu]

elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 3 août 2005 à 15:59 - Dernière réponse : jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 août 2005 à 16:20
3
Merci
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

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de jlen100
Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 3 août 2005 à 18:38
3
Merci
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;

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de jlen100
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 4 août 2005 à 09:47
0
Merci
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 !
Commenter la réponse de elguevel
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 4 août 2005 à 10:37
0
Merci
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é!!!
Commenter la réponse de jlen100
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 4 août 2005 à 10:52
0
Merci
Bon j'essaye et j'te dit :)

Merci.
Commenter la réponse de elguevel
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 4 août 2005 à 11:14
0
Merci
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 );
Commenter la réponse de jlen100
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 4 août 2005 à 11:25
0
Merci
Arf j'en chie avec ta methode j'ai des erreurs de compilations dans tout les sens :s
Commenter la réponse de elguevel
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 4 août 2005 à 14:01
0
Merci
çà 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
Commenter la réponse de elguevel
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 4 août 2005 à 14:04
0
Merci
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
Commenter la réponse de elguevel
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 4 août 2005 à 16:15
0
Merci
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.

++
Commenter la réponse de jlen100

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.