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

C++Builder Discussion :

Réécrire un fichier en écrasant son contenu.


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut Réécrire un fichier en écrasant son contenu.
    Bonjour.
    Je veux ouvrir un fichier en mode exclusif, travailler sur son contenu et le réécrire. Le problème est que s'il y avait plus de caractères initialement, ils restent derrière le nouveau contenu.
    Le fichier doit rester ouvert entre la lecture et l'écriture.
    Voici un bout de code exemple.
    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
     
       int nb;
       AnsiString as;
     
       handle = FileOpen(FICHIER, fmOpenReadWrite | fmShareExclusive);
       if(handle == -1) { Beep(); return; }
       nb = FileSeek(handle,0,2);
       FileSeek(handle,0,0);
       char *buffer = new char[nb];
       int res = FileRead(handle,buffer, nb);
       as = buffer; // Je lis "11111\n22222"
       FileSeek(handle,0,0);
       as = "33333";
       nb = as.Length();
       FileWrite(handle, as.c_str(), nb); // J'obtiens "33333\n22222"
       FileClose(handle);
    Ca fait un moment que je cherche le moyen de remplacer complétement le contenu de ce fichier, sans succès.
    Merci pour toute suggestion.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Par défaut
    C bon. J'ai fini par trouver, en utilisant l'API Windows...
    Voici le code :
    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
     
      HANDLE hdl = CreateFile("d:toto.txt",  GENERIC_READ|GENERIC_WRITE,
      0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     
      int nb = GetFileSize(hdl, NULL);
      char *buf = new char[nb];
      unsigned long nbRead;
      ReadFile(hdl, buf, nb, &nbRead, NULL);
     
      AnsiString as = "xxxxx";
      nb = as.Length();
      unsigned long nbWritten;
      SetFilePointer(hdl, 0, NULL, FILE_BEGIN);
      WriteFile(hdl, as.c_str(), nb, &nbWritten, NULL);
      SetEndOfFile(hdl);
      delete buf;
      CloseHandle(hdl);

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

Discussions similaires

  1. Generer un fichier et lire son contenu sous Zend
    Par cyprien95 dans le forum Zend Framework
    Réponses: 2
    Dernier message: 15/10/2012, 09h11
  2. Generer un fichier et lire son contenu sous Zend
    Par cyprien95 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 07/10/2012, 23h03
  3. fichier vidé de son contenu
    Par philippe6 dans le forum Windows
    Réponses: 7
    Dernier message: 18/03/2011, 12h00
  4. Réponses: 1
    Dernier message: 01/06/2009, 05h12
  5. Réponses: 1
    Dernier message: 16/03/2009, 22h30

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