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

Delphi Discussion :

[D7][WIN32]concaténer deux fichiers


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Par défaut [D7][WIN32]concaténer deux fichiers
    Salut,
    je voudrais soit insérer des données (octet par octet) en début d'un fichier, soit concaténer deux fichiers. Pour l'instant je fais une copie octet par octet, et ça peut devenir long sur des fichiers de plusieurs Mo.
    Quelqu'un aurait il une idée ?

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Insérer (la vraie insersion) des données en début d'un fichier est impossible; Je m'explique : En fait, il faut créer un nouveau fichier, faire une copie. Par contre, il est possible d'ajouter des nouvelles données à la fin d'un fichier. Jette donc un oeil à la FAQ si tu cherches des exemples de code, tu trouveras tout ce dont tu as besoin. Et n'oubli pas la touche F1, renseigne toi en particulier sur la classe TFileStream... à+

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Par défaut
    Hummm... perso je ferai a peu près comme ca ... En améliorant un peu la gestion d'erreur bien entendu.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    //--------------------------------------------------------------------------//
    // procedure: Append
    // But      : Cette fonction concatene les fichier1 et fichier2 et met le
    //            resultat de cette concatenation dans fichierDest
    //
    // Params   : fichier1    : le fichier qui sera au debut de fichierDest
    //            fichier2    : le fichier qui sera à la fin de fichierDest
    //            fichierDest : le résultat de la concatenation
    //
    // Remarque : Le fichier de destination doit etre différent de ceux d'entrée
    //--------------------------------------------------------------------------//
    procedure TForm1.Append(fichier1, fichier2 : String; fichierDest : String );
      var f1, f2, fdest : File;
          fSize         : Integer;
          buffer        : String;
    begin
     
      if FileExists(fichier1) and FileExists(fichier2) then begin
     
        try
          AssignFile(f1,fichier1);
          AssignFile(f2,fichier2);
          AssignFile(fdest,fichierDest);
          Reset(f1);
          Reset(f2);
          Rewrite(fdest);
          fSize := FileSize(f1);
          BlockRead(f1, buffer, fSize );
          BlockWrite(fdest, buffer, fSize);
          fSize := FileSize(f2);
          BlockRead(f2, buffer, fSize );
          BlockWrite(fdest, buffer, fSize);
        finally
          CloseFile(f1);
          CloseFile(f2);
          CloseFile(fdest);
        end;//try
     
      end else begin
        ShowMessage('Un des fichier spécifiés en entrée n''existe pas');
      end;//if
     
    end;
    Si tu veux écrire octet par octet, au lieu de passer la taille du fichier en entier dans le BlockRead BlockWrite tu met 1 comme taille et tu fais une boucle while not EOF(f1) ... si ca peut t'aider

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Par défaut
    En fait je veux rajouter une entête de fichier bitmap à un fichier quelconque.
    La méthode pour faire l'entête je l'ai et elle est au point.
    Je vais essayer avec les blockread et blockwrite pour voir si c'est plus rapide pour copier le fichier après l'entête.

    question: le TFileStream c'est seulement en .NET, non ?

  5. #5
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par Herk77
    question: le TFileStream c'est seulement en .NET, non ?
    Non. Sous D6, je l'ai aussi.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Par défaut
    J'ai essayé Blockread et blockwrite mais j'ai une interruption : Erreur E/S 998

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténer deux fichiers
    Par emmachane dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 07/01/2011, 17h18
  2. Concaténer deux fichiers PDF avec pdftk
    Par serana71 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/04/2010, 11h08
  3. Concaténer deux fichiers PDF
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/04/2010, 12h00
  4. Comment concaténer deux fichiers *.txt ?
    Par thomcat dans le forum Général VBA
    Réponses: 11
    Dernier message: 11/04/2008, 23h47
  5. Concaténer deux fichiers binaires
    Par mickael.be dans le forum Delphi
    Réponses: 7
    Dernier message: 30/07/2006, 13h11

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