Composant permettant de trier le contenu d'un fichier texte

Soyez le premier à donner votre avis sur cette source.

Vue 6 155 fois - Téléchargée 538 fois

Description

Ce composant non visuel vous permet de trier le contenu d'un fichier texte dans l'ordre croissant ou décroissant. L'algo de tri est celui contenu dans une des démos fournies avec Delphi. J'ai juste repris ce code dans un composant afin de simplifier son utilisation.

Pour l'utiliser, vous devez renseigner le chemin et le nom du fichier à trier dans la propriété ficEntree et le nom du fichier en sortie dans ficSortie (si le fichier de sortie existe déjà, il sera écrasé). Pour lancer le tri, appelez la procédure Executer. Vous pouvez également choisir l'ordre du tri dans la propriété Ordre.

Ce code n'est pas commenté car j'ai juste repris l'exemple de tri fourni par Delphi, par contre il peut vous servir à apprendre à faire un composant.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

bernardg15
Messages postés
1
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
24 janvier 2005
-
je telecharge plusieur winzip mest ca marche pas
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
Salut,
J'ai moi aussi quelques remarques constructives a te transmettre car je suis aussi d'accord avec GrandVizir pour le tri simple.

1) Que viennent faire "dialogs" "messages" "graphics" et stdctrls dans le unités déclarées ??

2) je ne suis pas sur que cela soit du ressort de ton composant de s'occuper de ça :
if curseur then screen.cursor := crHourGlass;
mais plutot a l'application elle meme, enfin c'est mon avis. et puis je pense que l'unité "forms" pourra sauter =)

3) dans la description tu dis "Pour lancer le tri, appelez la procédure Executer" dommage que cette procedure n'existe pas ! elle s'apelle "tri", mais "executer" est nettement mieux comme nom.
pour info tu dois la déclarer en public et non published (meme si ça marche aussi en published).

4) le type des fichiers devrait être "TFileName" au lieu d'une simple String (limitée à 255c).

5) et puis comme d'hab, ceux qui me connaissent le savent : j'ai testé la rapidité d'execution de ton code avec celui de grandvizir (c'est a dire celui que lui, moi et delphiprog utilisons) et voila le resultat sur un fichier de 2300 lignes :
http://diabloporc.free.fr/delphi/demos/gbevsgvz.jpg
GBE (auteur) : 83 millisecondes
GVZ (nous) : 21 millisecondes
dois presque 4 fois plus rapide rien que pour 2300 lignes.

6) Ton tri n'est pas bon !!!! les " _ " apparaissent APRES les "z" !!!! alors qu'ils doivent etre dans les premiers !

7) je viens de supprimer "forms" ainsi que tout ce qui touche au curseur, je passe bizzarement à 55 millisecondes... je l'avais dit =)

8) allez une derniere pour la route, je te conseille de déclarer tes variables persos avec un "f" dans un composant, exemple (d'une pierre 2 coups voila le TFileName) :
fNomFic1, fNomFic2 : TFileName;
c'est pas obligatoire mais c un peux comme le "T" =)

ma note orale 3/10
mets a jour ce compo si tu veux/peux, essaie de faire que le trie fonctionne, vire le curseur =) etc et puis le composant sera peut etre un jour utile.
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
"Ce code n'est pas commenté car j'ai juste repris l'exemple de tri fourni par Delphi". Dans ce cas, tout le monde là et il n'a rien à faire sur ce site.

Tout à fait d'accord avec GrandVizir : un TStringList suffit amplement pour trier une liste de chaînes.

Il est donc inutile de réinventer ce qui existe déjà.
cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
Pour ne pas s'embêter, voici un programme Console:

program Test;
uses Classes;
var STL : TStringList;
begin
STL:=TStringList.Create;
STL.Clear;
try
STL.LoadFromFile(FICHIER);
STL.Sort;
STL.SaveToFile(NewFICHIER);
finally
STL.Free;
end;
end.

Le tri est alphabétique.

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.