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 :

Sysutils::FileRead lecture incohérante


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Sysutils::FileRead lecture incohérante
    Bonjour à tous,

    Je vous expose mon problème. Je dois à partir de mon application lire un fichier texte. Simple me direz-vous (fopen, fstream,etc... les solutions ne manquent pas) mais j'ai décidé d'utiliser la routine FileRead afin d'en comprendre le fonctionnement.

    Le fichier texte en question contient une seule ligne --> V08.24.02

    voici mon 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
     
    char *Version = new char[10];
    ZeroMemory(Version, sizeof(Version));
    int HandleFichier = FileOpen("C:\\logiciel\\Test\\f_test.ver")
    if(!HandleFichier)
    {
    Application->Terminate()
    }
    else
    {
    FileSeek(HandleFichier, 0, 0); //inutile ?
    FileRead(HandleFichier, Version, 10);
    FileClose(HandleFichier);
    }
    Mais curieusement ma variable Version contient -->V08.02a.00
    au lieu de -->V08.24.02

    Quelqu'un peut-il m'expliquer ce miracle ?
    Cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello,

    Ai essayé sous Builder 2007 et 2009, ça relit bien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    char Version[10];
    ZeroMemory(Version, sizeof(Version));
    int HandleFichier = FileOpen("c:\\ver.txt", 0);
    if(!HandleFichier)
    {
    Application->Terminate();
    }
    else
    {
    //FileSeek(HandleFichier, 0, 0); //inutile ?
    FileRead(HandleFichier, Version, 9);  
    FileClose(HandleFichier);
    }
    Sous quelle version de Builder travailles-tu ?

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    A prioris je n'ai pas de problème non plus avec ce bout de code (sous BCB5):

    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
      char *Version = new char[9];
      ZeroMemory(Version, sizeof(Version));
      int HandleFichier = FileOpen("C:\\version.txt", 0);
      if(!HandleFichier)
      {
         Application->Terminate() ;
      }
      else
      {
         //FileSeek(HandleFichier, 0, 0); //inutile ?
         FileRead(HandleFichier, Version, 9);
         FileClose(HandleFichier);
      }
      Version[9] = 0 ;
      ShowMessage( AnsiString(Version) ) ;
    J'obtiens bien :

    V08.24.02

    Une autre solution pour lire ton fichier avec l'utilisation de TStringList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      TStringList *fichier = new TStringList();
      fichier->LoadFromFile( "C:\\version.txt" ) ;
      AnsiString Version;
      Version = fichier->Text ; //si le fichier ne contient qu'une ligne
      Version = fichier->Strings[0] ; // si le fichier contient plus d'une ligne
      delete fichier ;
      ShowMessage( Version ) ;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut RESOLU
    Bonjour à tous,

    Apparemment c'était surement du à une fuite mémoire de mon prog un peu plus haut dans mon code car lorsque j'ai commenté la fonction incriminé plus de problème.

    je vous remercie d'avoir apporté de l'attention à ce petit bout de code

    A bientôt

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

Discussions similaires

  1. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54
  2. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43
  3. Pb Lecture de bitmap monochrome
    Par Loïc38 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/07/2002, 18h24
  4. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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