Récupérer les dernieres lignes d'un fichier texte

Résolu
gg79 Messages postés 15 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 15 février 2006 - 8 févr. 2006 à 08:58
gg79 Messages postés 15 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 15 février 2006 - 8 févr. 2006 à 10:43
Bonjour tout le monde, je travaille sous delphi 6 ent (en novice). je dois travailler sur un fichier csv et récuperer les 20 dernieres lignes de ce fichier. En ce moment, j'utilise une liste chainees (pointeurs) pour stockés les infos du fichiers car je dois parcourir tout le fichiers (Tant que pas fin de fichiers), Y aurait-il une solution pour partir de la fin du fichier et ainsi reduire mon traitement. (Le fichier a 5000 lignes!!!).
Je vous en remercie d'avance et désolé pour le dérangement.
Viva Delphi

6 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
8 févr. 2006 à 10:00
tu as plusieurs solution soit utiliser la méthode addobject;

soit utiliser une TList que est une liste de pointeurs ce qui dans ton
cas n'est pas une difficulté puisque tu utilise une liste chainé je te donne l'exemple delphi

type

PMyList = ^AList;

AList = record

champ1: string;

champ2: string;

end;



var



MyList: TList;

ARecord: PMyList;

B: Byte;

Y: Word;

comme pour le Tstringlist : MyList := TList.Create;

while not EOF(F) do

begin

New(ARecord);

//la tu charges l'enregistrement à partir du fichier

MyList.Add(ARecord); {Ajoute l'enregistrement à la liste}

end;

ensuite tu peux l'utiliser comme précédemment

var buffer:string;

for i:=Mylist.count-21 to Mylist.count-1 do

begin

Arecord:=Mylist.items[i];

buffer:=Arecord^.champ1; par exemple

// la tu mets ton traitement

end;

pour libérer la liste:

for B : = 0 to (MyList.Count - 1) do



begin

ARecord := MyList.Items[B];

Dispose(ARecord);

end;

MyList.Free;



comme tu peux le constater c'est une version évoluée des listes chainées



@+

jlen
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
8 févr. 2006 à 09:29
salut utilises plutot une une Tstringlist. qui est plus simple à gérer qu'une liste chainée



declares une variable Tstring

var TempList: TStrings; { déclarer la liste }

dans le form create (par exemple ou quand tu as besoin de la liste) tu creés la liste



TempList := TStringList.Create; { construire l'objet liste }





dans ta procédure de lecture du fichier tu charges ta liste



tempList.LoadFromFile( 'Nom du fichier')





ensuite tu utilises ta liste pour cela tu as la propriété count
qui te donnes la longueur de la liste il suffit de donner
l'indice pour accéder à une chaine insi pour récupérer les 20 dernières
lignes:

var buffer:string;

for i:=Templist.count-21 to TempList.count-1 do

begin

buffer:=TempList[i];

// la tu mets ton traitement

end;



dans le onclose de la form (par exemple ou avant quand tu n'as plus besoin de la liste)

TempList.Free; { détruire l'objet liste }





@+

jlen
0
gg79 Messages postés 15 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 15 février 2006
8 févr. 2006 à 09:40
A je ne connaissais pas la Tstringlist, je pourrais l'utiliser mais g plusieurs colonnes ds mon fichiers.
Est-ce possible avec la tsringlist?
Si oui comment faire?
Merci d'avance mais cest une piste a suivre!
Viva Delphi
0
gg79 Messages postés 15 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 15 février 2006
8 févr. 2006 à 10:29
Nikel Merci C'est 2 fois plus tranquille,
Pile poil pour mon appli, maintenant elle en jete
Je te remercierais jamais assez
Merci encore jlen100
@+
0

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

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
8 févr. 2006 à 10:31
si la réponse te convient n'oublie pas de cliquer sur réponse accepter
(cela facilite les recherches pour ceux qui auraient le même problème)



@+

jlen
0
gg79 Messages postés 15 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 15 février 2006
8 févr. 2006 à 10:43
Ok merci
0
Rejoignez-nous