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 :

copie d'un fichier non txt dans String pour envoie rs232


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut copie d'un fichier non txt dans String pour envoie rs232
    Bonjour à tous,

    J'ai lu et relu les FAQ's sans trouver mon bonheur, je souhaite copier le contenue d'un fichier, en paramètre, dans une AnsiString, le problème que j'ai rencontrer est que, dans certain de mes fichiers se trouve des caractères ASCII correspondant à des EOF, ce qui provoque l’arrêt de la lecture de mon fichier, D'où mon code suivant

    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
     
    AnsiString read_file(std::ifstream &file_to_send)
    {
     
            AnsiString Trame;
            U32 nb=nb_byte_file(file_to_send);
            U32 tailleTrame = Trame.Length();
     
            while(tailleTrame<nb)
            {
                    char * ligne_lue = new char[nb];
     
                    file_to_send.read(ligne_lue,nb);
     
                    Trame+=ligne_lue;
                    ShowMessage(Trame);
     
                    tailleTrame = Trame.Length();
                    file_to_send.seekg(tailleTrame+1,ios::beg);
     
                    delete[] ligne_lue;
                    ShowMessage(tailleTrame);
            }
            return Trame;
    }
    Ce code fonctionne très bien pour des fichiers txt mais pas pour des fichiers jpg, et fnt. Si quelqu'un à déjà eu ce genre de problème, ou connait une solution je suis preneur,
    merci d'avance.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    file_to_send est ouvert en mode ios::binary ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_to_send.open(name_file,ios::binary);

  4. #4
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Est-ce que tu as vérifié que ça ne marchait pas, en affichant les lignes avant de les rentrer dans Trame, par exemple ?

    Normalement, la lecture d'un fichier ne s'arrête pas au caractère EOF. (qui, d'ailleurs, n'existe pas : https://duckduckgo.com/?q=ascii+table )

    Par contre, si tu as un NUL ('\0'), ça va bloque ton char * ; qui ne va pas réussir à savoir où s'achève la chaîne de caractère (même si tu peux récupérer cette information avec file_to_send.gcount()).

    Du coup, àmha, ton problème ne vient pas de la lecture du fichier, mais plutôt du remplissage de l'AnsiString.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Par défaut
    oui oui j'ai vérifié que ça ne fonctionnait pas, en mettant des ShowMessage(ligne_lue) après file_to_send.read(ligne_lue,nb) et j'ai remarqué que le caractère sur lequel il s’arrêtait était le caractère 0x03 ou ETX(pour moi c'est un EOF )
    Le problème viens bien de la lecture a mon avis car l'affichage de la ligne_lue ne me donne pas ce que je veux.

  6. #6
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Le caractère suivant le 0x03 n'est pas un 0x00 ?

    Parce que, en théorie, un fichier peut contenir n'importe quelles données, or il me semble que toutes les méthodes de lecture, dans tous les langages, fonctionnent grosso modo pareil -- du coup, comment n'importe quel programme pourrait-il lire un fichier ?

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/08/2014, 12h13
  2. Comment inclure un fichier non vital dans l'installeur?
    Par Sunsawe dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 11/10/2007, 14h46
  3. [HTML] Inserer un fichier text (".txt") dans une page HTML
    Par silverfab34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/10/2007, 11h57
  4. lien vers fichier non placer dans répertoire: 3w
    Par cobra85 dans le forum Apache
    Réponses: 1
    Dernier message: 22/08/2007, 09h25
  5. fichier non trouvé dans apache?
    Par darkbob dans le forum Web
    Réponses: 1
    Dernier message: 18/07/2006, 03h03

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