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

MFC Discussion :

copier une structure dans un fichier


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut copier une structure dans un fichier
    bonjour,

    J'aimerai copier l'int�gralit� d'une structure dans un fichier. Je connais la syntaxe en C mais je dois le faire en c++ et je Galere ...

    En C : _os_write(pt_Config->cfa_path_fichier,&et_dataa,&count)
    ca marche tres bien.

    En c++ : BWriter->Write(&pTyDebutCnf,0, 12);
    J'ai essay� ca mais j'ai une erreur 2624....
    j'ai �galement essay� d'autres solutions mais sans r�ussite.

    Si quelqu'un sait comment faire ou a une id�e..... car l� .......

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    c'est du C++.Net ?

    quelle est l'erreur 2624 ? sur quelle ligne ? qu'y a-t-il dans ta structure ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    oui c du C++.net

    ma structure est la suivante :
    struct TyDebutCnf
    {
    char DebVersion[8];
    long int DebLongueur;
    char DebTitre[80];
    };

    j'ai une erreur C2664 impossible de convertir le parametre 1 de TyDebutCnf * en unsigned char __gc[] sur la ligne : BWriter->Write(&pTyDebutCnf,0, 12);

  4. #4
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Et avec un cast devant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    BWriter->Write((unsigned char *) &pTyDebutCnf,0, 12);
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    pas s�r: La fonction semble demander du manag� et la structure semble ne pas l'�tre (d'apr�s le message d'erreur)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    avec un cast :

    BWriter->Write((unsigned char *)&pTyDebutCnf,0, 12);

    j'ai la meme erreur C2664 ,

    lorsque j'essai avec le meme cast mais sur une autre d�finition de Write (avec un seul argument)

    BWriter->Write((unsigned char *)&pTyDebutCnf);

    je n'obtiens pas d'erreur mais c'est le r�sultat dans le fichier qui me donne qu'un seul caractere.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    lorsque je d�bug, je regarde ma fonction write, et il y a marquer <overloaded>, peut etre un probleme de Buffer overflow ????

  8. #8
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    non, il te faut utiliser un pointeur �pingle, __pin

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    un pointeur d'�pingle ???

    je connais pas du tout, tu peu me dire a quoi cela consiste please ?

  10. #10
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    j'ai essay� et j'ai une erreur C2440

    est - ce valable sur des types struct ????

  12. #12
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    normalement oui
    sinon, �crit les donn�es les unes apr�s les autres, plutot que tout en une fois

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    Je viens de trouver comment copier la valeur d'un champ d'une structure :

    BWriter->Write(Convert::ToString(pTyDebutCnf.DebVersion));

    Si j'utilise la ligne ci dessus, je ne copie que la valeur du champs et non l'int�gralit� du champ( avec les octets a 0).

    En fait, je dois copier les 12 premiers octets de la structure TyDebutCnf dont DebVersion fait partit (8octets) et dont DebLongueur fait �galement partit (4 octets).

    Avez vous une id�e sur comment copier l'int�gralit� d'un champ ( avec les octets a 0 ) ??

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    quelqu'un connait la solution please ??

  15. #15
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    est-ce que tu as essay� un truc du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    		 unsigned char tabByte __gc[] = new unsigned char __gc[sizeof(TyDebutCnf)];
    		 System::Runtime::InteropServices::Marshal::Copy(tabByte, 0, &pTyDebutCnf, sizeof(TyDebutCnf));
    		 BWriter->Write(tabByte,0, sizeof(TyDebutCnf));

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    merci pour ta r�ponse,

    aucune erreur lors de la compilation mais les octets copi�s dans le fichier sont tous a 0 !! ????

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    tabByte
    ne contient pas les donn�es des champs de la structure TyDebutCnf,
    la ligne suivante n'effectue pas la copie correctement.
    System::Runtime::InteropServices::Marshal::Copy(tabByte, 0, &pTyDebutCnf, sizeof(TyDebutCnf));

    Savez vous d'ou viens l'erreur ?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    27
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 27
    Par d�faut
    peut etre est-ce a cause de ma structure qui ne contient pas que des unsigned char mais aussi un long Int ?

  19. #19
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    excuse moi, vu que je n'ai pas test�, je n'avais pas vu que j'avais fait une erreur dans la lecture des param�tres de fonctions, et que j'avais invers� la source et la destination ...

    remplace
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    System::Runtime::InteropServices::Marshal::Copy(tabByte, 0, &pTyDebutCnf, sizeof(TyDebutCnf));
    par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    System::Runtime::InteropServices::Marshal::Copy(&pTyDebutCnf, tabByte, 0, sizeof(TyDebutCnf));

Discussions similaires

  1. R�ponses: 8
    Dernier message: 02/12/2007, 02h03
  2. R�ponses: 17
    Dernier message: 09/03/2007, 18h13
  3. [VBA-E] Copier une macro dans un fichier � l'aide d'une macro
    Par Capsule dans le forum Macros et VBA Excel
    R�ponses: 7
    Dernier message: 09/01/2007, 20h05
  4. stocker une structure dans un fichier ini?
    Par Mickey.jet dans le forum C
    R�ponses: 6
    Dernier message: 13/09/2006, 16h57
  5. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requ�tes
    R�ponses: 2
    Dernier message: 15/12/2003, 12h09

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