IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Extraire une partie d'un fichier


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Extraire une partie d'un fichier
    salut les mec!!!!
    je cherche une fonction ou une méthode pour faire extraire une partie d'un fichier.
    Cette partie est limité par un offset du départ et un autre pour finir.....
    merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Cela devrait pouvoir se faire via un TFileStream.
    Va jeter un coup d'oeil dans la FAQ.

    Mille excuses je pensais avoir vu les Streams (Flux) dans la FAQ
    mais erreur on en parle dans les Tutoriels.
    - ici : http://delphi.developpez.com/cours/asm/flux/
    - là : http://delphi.developpez.com/cours/?...angage-fichier

    Ce lien n'est pas mal non plus :ftp://ftp-developpez.com/flash-koti/...filestream.pdf
    .. voir l'exemple de la function OuvrirFichier() : boolean qui récupère une partie d'un fichier pour la placer dans un Record.

    Sur ce bon week-end.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Gilbert Geyer
    --------------
    merci mais j'ai déjà lus tous ce que tu m'as donné maintenant, et j'arrive pas à trouver la bonne route pour faire mon travail
    Ce je que je voudrais c'est savoir comment couper un fichier en parties mais sauvegarder une seule, cette partie par exemple commence de l'offset 2 et fini par l'offset 100 et entre 2 et 100 c'est le contenu que je veux sauvegarder dans un autre fichier
    c'est tout

    merci

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    regardes par .
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Just-Soft
    --------
    regarde mon dernier message j'ai bien exliqué le prob


    merci

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    le problème est bien décrit effectivement, et il me semble qu'il s'agit bien d'une structure binaire. donc faut regarder dans les fonctions qui traitent du fichier binaire.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,

    Voici une exemple simplifé d'une fonction qui charge un fragment d'un fichier via un TFileStream dans son Result sous la forme d'un TMemoryStream :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function CopyFragFile(const FileName : String; From,SizeFrag : longint) : tMemoryStream;
    //       Renvoie un MemoryStream contenant la copie d'un fragment d'un fichier à
    //       partir de la position From et de taille SizeFrag octets
    var      FS : tFileStream;
    begin    Result:=tMemoryStream.create;
             if (not FileExists(FileName)) then
             begin Showmessage('Fichier '+FileName+' : inexistant'); EXIT; end;
             FS := TFileStream.create(FileName, fmOpenRead or fmShareDenyWrite);
             FS.Position := From;
             Result.CopyFrom(FS, SizeFrag);
             Result.Position:=0;
             FS.Free;
    end;
    Et voici un exemple d'utilisation où je récupère le MemoryStream pour alimenter un RichEdit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.SpeedButton2Click(Sender: TObject);
    var       MS : TMemoryStream; FileName : String; From,SizeFrag : longint;
    begin
              FileName:=ExtractFilePath(Application.ExeName)+'test0.dat');
              From:=856; SizeFrag:=7039;
              MS:=CopyFragFile(FileName,From,SizeFrag);
              RichEdit1.Lines.LoadFromStream(MS);
              MS.Free;
    end;
    (Dans cet exemple le fichier de données 'test0.dat' contenait du texte mais les Stream's peuvent avaler n'importe quel type de données).

    Et comme tu veux sauvgarder ton fragment dans un autre fichier il suffit de remplacer ci-dessus RichEdit1.Lines.LoadFromStream(MS); par MS.SaveToFile(FileNameDestination);

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Gilbert Geyer
    -----------------
    Merci !!!!!
    C'est vraiment fantastique
    une chose de plus
    Pouvez Vous me donner la fonction qui ajoute un fichier a un autre
    (Une autre fonction qui fais un travail inverse de la function CopyFragFile)
    --------------------
    Smith
    THX

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Pouvez Vous me donner la fonction qui ajoute un fichier a un autre
    ... ben suffit de créer un Fichier3 dans lequel on transfère le Fichier1 au début et le Fichier2 à la suite.

    Il est où le problème ?

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    c'est ça l'idée mais faut-il une fonction ou quoi??
    j'ai pas compris...

    --------------
    Smith
    Merci

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-salut

    faut-il une fonction ou quoi??
    ... fonction ou procédure : on s'en fout.

    Tiens voici une procedure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure Add_Files(const FileName1,FileName2,FileDest : String);
    //        Crée le fichier FileDest en ajoutant le fichier FileName2 à la suite de FileName1
    var       FS1,FS2,FSR : tFileStream;
    begin     if (not FileExists(FileName1)) then
              begin Showmessage('Fichier '+FileName1+' : inexistant'); EXIT; end;
              if (not FileExists(FileName2)) then
              begin Showmessage('Fichier '+FileName2+' : inexistant'); EXIT; end;
              if FileExists(FileDest)
              then FSR := TFileStream.create(FileDest, fmOpenWrite)
              else FSR := TFileStream.create(FileDest, fmCreate);
              FSR.Position := 0;
              FS1 := TFileStream.create(FileName1, fmOpenRead);
              FS1.Position := 0;
              FSR.CopyFrom(FS1, FS1.Size); // Copie du 1er
              FS2 := TFileStream.create(FileName2, fmOpenRead);
              FS2.Position := 0;
              FSR.CopyFrom(FS2, FS2.Size); // Copie du 2ième
              FS1.Free;
              FS2.Free;
              FSR.Free;
    end;
    Avertissement : Si le fichier nommé FileDest existe déjà il est automatiquement écrasé par le nouveau sans message d'avertissement.
    Pour ajouter une message d'avertissement, modifier la partie if FileExists(FileDest) then ... else ...

    Exemple d'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.AddFilesClick(Sender: TObject);
    var       FileName1,FileName2,FileDest : String;
    begin     FileName1:=ExtractFilePath(Application.ExeName)+'Premier.txt;
              FileName2:=ExtractFilePath(Application.ExeName)+'Deuxieme.txt;
              FileDest :=ExtractFilePath(Application.ExeName)+'LesDeux.text';
     
              Add_Files(FileName1,FileName2,FileDest);
     
              Memo1.lines.LoadFromFile(FileDest); //<- affichage pour vérification
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Gilbert Geyer
    -------------
    Merci
    Mais les fonctions de ton dernier post ne m'aident pas
    Il faut que le fichier je l'ajoute au fichier déjà ouvert on s'appuyant sur un Offset du départ et la dernière fonction ne fais pas ce que je voudrais

    Merci de me donner une autre fonction

    ------------
    Smith

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Re-salut,

    La demande a été :
    Pouvez Vous me donner la fonction qui ajoute un fichier a un autre
    ... et la procedure Add_Files(const FileName1,FileName2,FileDest : String); réalise ceci.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. Extraire une partie d'un fichier XML
    Par Thordax dans le forum VB.NET
    Réponses: 13
    Dernier message: 07/06/2011, 11h24
  2. Extraire une partie d'un fichier bin
    Par simon1 dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2009, 15h29
  3. Extraire une partie d'un fichier de bytes
    Par Cedwik dans le forum Flex
    Réponses: 1
    Dernier message: 14/04/2008, 11h27
  4. extraire une partie d'un fichier texte
    Par Mydriaze dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2007, 12h46
  5. Awk extraire une partie d'un fichier
    Par titexe dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2006, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo