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 :

Visual C++ CFile


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut Visual C++ CFile
    voila la situation, j'ai 1 grand nombre de bouton et quand je clique dessus ils doivent enregistrer dans 1 fichier 2 chiffres. ils se peut qu'il y ais jusqu'a 20 chiffres de stocker, voir peut etre plus....

    je me suis rensigner et j'ai vue les CFile

    j'ai regarde 1 tuto sur developpez.com, j'ai bien tout taper mais sa marcher pas.

    j'ai chercher sur le forum et je suis tomber sur 1 message d'un admin sur l'enregistrement/lecture sur CFile et API32 j'ai essayè mais il me dit que la fonction Write ne peut pas travailler avec 1 des parametre car c'est 1 int.

    alors merci de me donner le code pour lire et celui pour écrire des donnè et si possible d'en expliquer le fonctionnement.


    merci

  2. #2
    Membre confirmé Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par défaut
    Qu'est ce qui ne fonctionne pas dans ton code? il y a des erreurs ou il ne se passe rien à l'execution?
    Sinon si l'ecriture de ton int ne passe pas, passe par un CString::Format
    avant

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    avec un CFile tu peux stocker ce que tu veux meme un entier .
    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
     
        CFile File ("c:\\test", CFile::modeCreate | CFile::modeWrite  | CFile::typeBinary );
          int anInt[] = {1,100,150,200,300,500,700,800,523,100};
          int nSize=sizeof(anInt);
          File.Write(&nSize, sizeof(int));  // 1 int
          File.Write(anInt, sizeof(anInt));// ecriture en 1 seule fois.
          File.Close();
        nSize=0;
        CFile Filer ("c:\\test", CFile::modeRead  | CFile::typeBinary );
        File.Read(&nSize, sizeof(int));
         int nNumber;
         for(int i=0;i<nSize;i++)
        {
              Filer.Read(&nNumber, sizeof(int));
              TRACE("\ni:%d=%d",i,nNumber);
        }
          Filer.Close();
    j'ai pas testé mais ça doit etre bon.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    sa marche pas, j'ai pas tout compris dans ton code, pour crèè les CFile c'est ok mais sizeof j'ai pas compris comment sa fonctionne, quelqu'un peut me fair 1 schema??

    avec ce que j'ai compris voila le code de 2 bouton(1 ecriture et l'autre lecture, ils font pas que sa: tempo, changement de valeur de variable)

    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
     
    void CBrasPPEDlg::OnHaut() 
    {
    	m_Compteur = 0;
    	m_ValTempo.Format("Tempo: %d", m_Compteur);
    	UpdateData(FALSE);
     
    	m_Compteur = 1;
    	m_Atente = 6;
    	m_NumBtn = 1;
     
    	CFile File ("c:\\test", CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
    	File.Write(m_NumBtn, sizeof(int));
    	File.Close();
     
    	SetTimer(ID_TEMPO, 1000, NULL);
     
    }
     
    void CBrasPPEDlg::OnBas() 
    {
    	m_Compteur = 0;
    	m_ValTempo.Format("Tempo: %d", m_Compteur);
    	UpdateData(FALSE);
     
    	m_Compteur = 1;
    	m_Atente = 6;
    	m_NumBtn = 2;
     
    	CFile File ("c:\\test", CFile::modeRead | CFile::typeBinary);
    	File.Read(m_NumBtn, sizeof(int));
    	File.Close();
     
    	if (m_NumBtn == 1)
    		MessageBox("m_NumBtn vaut 1, gagner!");
    	else
    		MessageBox("m_NumBtn vaut pas 1, perdus!!");
     
    	SetTimer(ID_TEMPO, 1000, NULL);
     
    }
    Message d'erreur après compilation:
    Compiling...
    BrasPPEDlg.cpp
    D:\Programme\Visual\MSDev98\MyProjects\BrasPPE\BrasPPEDlg.cpp(223) : error C2664: 'Write' : cannot convert parameter 1 from 'int' to 'const void *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    D:\Programme\Visual\MSDev98\MyProjects\BrasPPE\BrasPPEDlg.cpp(241) : error C2664: 'Read' : cannot convert parameter 1 from 'int' to 'void *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    Error executing cl.exe.

    BrasPPE.exe - 2 error(s), 0 warning(s)
    Merci pour vos explication et votre aide


    PS: le code CString::Format a ajouter des erreurs j'ai donc abandonnè cette idèe

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    le code fonctionne (testé sous VC2005) j'ai juste fait un erreur sur nSize:
    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
     
    CFile File ("c:\\test", CFile::modeCreate | CFile::modeWrite  | CFile::typeBinary );
          int anInt[] = {1,100,150,200,300,500,700,800,523,100};
          int nSize=sizeof(anInt)/sizeof(int);
          File.Write(&nSize, sizeof(int));  // 1 int
          File.Write(anInt, sizeof(anInt));// ecriture en 1 seule fois.
          File.Close();
        nSize=0;
        CFile Filer ("c:\\test", CFile::modeRead  | CFile::typeBinary );
        Filer.Read(&nSize, sizeof(int));
         int nNumber;
         for(int i=0;i<nSize;i++)
        {
              Filer.Read(&nNumber, sizeof(int));
              TRACE("\ni:%d=%d",i,nNumber);
        }
          Filer.Close();
    sizeof renvoie la taille en octets du type ou de la variable designée.
    si tu as regardé mon code Write ou Read prend un pointeur comme argument pour ecrire le contenu d'une variable de type int il faut fournir l'adresse de la variable pour écrire son contenu .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File.Read(&m_NumBtn, sizeof(int)); //  &m_NumBtn
    File.Write(&m_NumBtn, sizeof(int)); //  &m_NumBtn

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    YESSSSS sa marche merci a vous

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    si c'est ok pense à mettre résolu sur ton post avec le bouton

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

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Choisir Visual c++ ou Borland C++Builder ?
    Par DevEric dans le forum Choisir un environnement de développement
    Réponses: 31
    Dernier message: 14/06/2007, 23h48
  3. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  4. Que choisir ? Visual C++ ou Borland c++ builder ?
    Par ashram dans le forum Débats sur le développement - Le Best Of
    Réponses: 27
    Dernier message: 24/02/2003, 14h39

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