begin process at 2012 02 11 12:08:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Fichier & Disque

 > 

ECRITURE ET TRI FICHIER


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ECRITURE ET TRI FICHIER

mardi 28 octobre 2008 à 15:26:15 | ECRITURE ET TRI FICHIER

didou2dek

Bonjour à tous, j'ai un souci avec un prog que j'essaie d'améliorer je coince sur le tri d'un fichier txt.
je travaille avec cet ex de file :
[PROJET]
electricité
maçonnerie
enduit
.....
[PLANNING]
20081020 0900 1100 didier
20081022 1000 1200 henri
20081022 1330 1800 maison perso
20081022 0830 0900 recup matériau
[FIN]

ce fichier est rafraichi en permanence et à chaque fois que je note un nouveau RDV, mon probleme est qu'il ecrit le fichier dans l'ordre ou je prends le RDV mais dans la section PLANNING on s'aperçoit qu'il ne me les tri pas en fonction de l'heure ce qui est génant car car j'utilise un affichage et que je viens piocher dans ce fichier il me donne les RDV tel qu'il les lit (ex pour le 20081022 il va m'afficher le RDV de 8h30 apres celui de 13h30)
je voudrais donc trier par heure croissant uniquement la section entre [planning] et [fin].
j'ai déja commencé à travailler en affectant tout dans une tstringlist.

ftstring : tstrings;
begin
ftstring:=tstringlist.create;
ftstring.loadfromfile(mon fichier)
tstringlist(ftstring).sort
ftstring.savetofile(....)
end;

mon pb c'est qu'il me tri tout et meme [PROJET] qui ne doit pas etre touché et tout est dans le désordre ça ne va pas je dois pouvoir trier uniquement la partie qui se trouve entre planning et fin....

merci à celui qui pourra me donner un coup de pouce à ce sujet

Cordialement

didou
mardi 28 octobre 2008 à 19:36:27 | Re : ECRITURE ET TRI FICHIER

cantador

Membre Club Administrateur CodeS-SourceS
bonsoir,
mon pb c'est qu'il me tri tout et meme [PROJET] qui ne doit pas etre touché et tout est dans le désordre ça ne va pas je dois pouvoir trier uniquement la partie qui se trouve entre planning et fin....

forcément tu fais un loadfromfile, comment veux-tu que le programme fasse le tri? 
il faut lire uniquement la section "[PLANNING]"..

Pour ça voir la gestion des fichiers INI

cantador
mardi 28 octobre 2008 à 21:46:34 | Re : ECRITURE ET TRI FICHIER

didou2dek

bonsoir Cantador,
mais l'utilisation des fichiers ini sert uniquement à récupérer une valeur se situant dans une rubrique que l'on veut exploiter, comment faire pour lui dire qu'apres ma "rubrique [planning]" je veux récupérer tout ce qui se trouve apres et ensuite le trier tout en gardant la structure dur fichier txt car il doit trier mais rester à la meme position et meme ordre ?

je nage un peu dans l'utilisation de ces fichiers txt en ecriture/lecture si tu peux me donner un tuyau ou une aide de code cela m'avancerait pas mal

merci par avance

didou
mercredi 29 octobre 2008 à 08:58:53 | Re : ECRITURE ET TRI FICHIER

cantador

Membre Club Administrateur CodeS-SourceS
[ Lien ]

[ Lien ]

Il faut chercher car la plupart du temps, ce que tu souhaites faire a déjà été réalisé...

cantador
mercredi 29 octobre 2008 à 13:36:22 | Re : ECRITURE ET TRI FICHIER

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

@Cantador:
le problème ici est que ce n'est pas un vrai fichier INI ... bien qu'il en ait l'aspect ce n'en est pas un ^^

voici une solution qui est adapté au problème de Didou2dek:
ps: le fichier texte est déjà chargé dans le TMemo
{-------------------------------------------------------------------------}
{ Project : Demo.dpr                                                      }
{ Comment : Tri une partie d'un fichier texte                                                              }
{                                                                         }
{    Date : 29/10/2008 13:22:30                                           }
{  Author : Cirec                                                         }
{-------------------------------------------------------------------------}
{ Last modified                                                           }
{    Date : 29/10/2008 13:22:30                                           }
{  Author : Cirec                                                         }
{-------------------------------------------------------------------------}
unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tfrm_Main = class(TForm)
    Memo1: TMemo;
    btn_Sort: TButton;
    procedure btn_SortClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  frm_Main: Tfrm_Main;
procedure SortListBetween(aStart, aStop: Integer; aList: TStrings); overload;
procedure SortListBetween(aStart, aStop: string; aList: TStrings);  overload;

implementation

{$R *.dfm}
procedure ExchangeInt(var aStart, aStop: Integer);
var TmpInt: Integer;
begin
  TmpInt := aStart;
  aStart := aStop;
  aStop := TmpInt;
end;

procedure SortListBetween(aStart, aStop: Integer; aList: TStrings);
var
  TmpList: TStringList;
  iI: Integer;
begin
  {Il faut au moins 2 entrée sinon on sort}
  if aList.Count < 2 then Exit;
  {Vérification des limites}
  if aStart > aStop then
    ExchangeInt(aStart, aStop);
  if aStop > aList.Count then
    aStop := aList.Count;
  if aStart < 0 then
    aStart := 0;
  {Début du tri}
  TmpList := TStringList.Create;
  try
    aList.BeginUpdate;
    with TmpList do
    begin
      Sorted := True;
      for iI := aStop-1 downto aStart+1 do
      begin
        Add(aList[iI]);
        aList.Delete(iI);
      end;
      for iI := Count-1 downto 0 do
        aList.Insert(aStart+1, Strings[iI]);
    end;
  finally
    TmpList.Free;
    aList.EndUpdate;
  end;
end;

procedure SortListBetween(aStart, aStop: string; aList: TStrings);  overload;
begin
  SortListBetween(aList.IndexOf(aStart), aList.IndexOf(aStop), aList);
end;

procedure Tfrm_Main.btn_SortClick(Sender: TObject);
begin
  SortListBetween('[PLANNING]', '[FIN]', Memo1.Lines);
  //SortListBetween('[FIN]', '[PLANNING]', Memo1.Lines);
end;

end.


 
@+
Cirec

mercredi 29 octobre 2008 à 14:43:16 | Re : ECRITURE ET TRI FICHIER

cantador

Membre Club Administrateur CodeS-SourceS
@cirec
J'avais vu aussi que le fichier n'avait pas la tête d'un ini...
j'espérai qu'il le découvre avec les liens..
En tout cas ta solution est excellente car du coup il n'y a plus à se soucier de la gestion du fichier.

cantador
mercredi 29 octobre 2008 à 23:35:02 | Re : ECRITURE ET TRI FICHIER

didou2dek

@Cirec
Merci beaucoup mon ami, un vrai coup de chapeau pour toi tu m'as bien aidé, j'avoue que c'est un peu complexe pour moi mais je vais bosse à fond sur ce code pour en comprendre toutes les subtilités.
Encore merci heureusement qu'il y a des gens comme toi pour aider des débutants comme moi !!

@+

didou


Cette discussion est classée dans : fichier, fin, tri, rdv, planning


Répondre à ce message

Sujets en rapport avec ce message

Copier un fichier à la fin d'un exe [ par Bombela ] Je fais un petit prog qui archive en compressant.Je voudrais que pendant que le prog marche, on puisse rajouter un fichier (je travaille avec TfileStr trier un fichier texte [ par manudel ] Je dispose d'un fichier texte, composé de 2 champs séparés par un point virgule.Je charge en mémoire ce fichier dans une TStringList.Je veux faire un Fin d'écriture dans un fichier ? [ par azera ] Voilà j'ai pas mal recherché mais je n'ai pas trouvé, alors je me suis dit que j'allais vous demander de l'aide.Je veux réaliser un programme de surve tronquer un fichier [ par LuckyLuck ] salut, un léger problème, enfin pas un problème mais plutot une recherche d'optimisation.Ce que je voudrais faire, c'est ne garder qu'une partie d'un Fichier Wav [ par MAsterC ] Quand je fait ceci; sndPlaySound(PChar('son.wav'), SND_LOOP); sa joue mon wav, mais à la fin il ne recommence pas la boucle? et en plus mon fichier wa Excel sans attendre la fin [ par Ptinico ] Salut,Question toute bête :- J'ai un fichier Excel ouvert contenant un macro déclenchée par un "Worksheet_SelectionChange"- Depuis Delphi, je me conne attendre la fin d'execution d'une ligne de commande [ par ahmbr ] Bonjour à tous,Je suis entrain de faire un petit projet avec delphi.je dois executer une ligne de commande ou un fichier batch, mettre la resultat dan Fin de fichier prématurée. [ par PHIL63 ] Bonsoir à tous,Je cherche à lire ligne par ligne un fichier texte. Jusque là pas de souci :)Sur certains fichiers celà fonctionne parfaitement mais su Re PB de fichier TXT [ par didou2dek ] Je rencontre à nouveau un souci avec mon fichier TXT, j'ai eu un eréponse positive concernant mon tri de données mais je galère à mort avec le manieme


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,945 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales