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 :

Enregistrer une struct


Sujet :

C++Builder

Vue hybride

FredericB Enregistrer une struct 06/07/2006, 04h55
bandit boy Salut, Une idée serait de... 06/07/2006, 09h10
CGi pData est un tableau de... 06/07/2006, 10h37
swirtel Effectivement il s'agit d'un... 06/07/2006, 19h32
FredericB Bonjour, J'ai encore une... 08/07/2006, 03h56
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut Enregistrer une struct
    Bonjour,

    Quel est le meilleur moyen d'enregistrer le contenu d'un tableau d'une structure ?
    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
     
    struct _stData {
                         bool bSelected;           
                         char cWord[255];         
                         int iSize;            
                         int iColor;          
                         bool bBold;               
                         bool bItalic;             
                         char cFontName[255];      
                         char cPicture[255];       
                         int iZoom;                     
                         unsigned int iObject;    
                         int iObjectColor;              
                         int iObjectX;                  
                         int iObjectY;                  
                     };
     
    _stData *pData[MAX];

    J'ai essayé ceci, mais ca ne marche vraiment pas bien. Parfois les données sont complètement fausses, ou alors le fichier fait planter mon application.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FILE *pFile;
     pFile = fopen(aFileName.c_str(),"wb");
     for (int i=0; i < MAX; i++)
    {
       fwrite(&pData[i], sizeof(_stData), 1, pFile);
    }
    fclose(pFile);
    Merci
    Fred

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    Une idée serait de passer par un TStringList. Dans chaque ligne, tu mets une variable (expl:"bSelected=false") et après tu utilises la méthode SaveToFile.

    Sinon tu peux utiliser un fichier .ini qui peut sauvegarder différent type de variable: chaine, entier ... cette dernière est simple efficace et assez approprié pour sauver des variable. Tout est décrit ici

  3. #3
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    pData est un tableau de pointeurs.
    Tu passe l'adresse des éléments de ce tableau à fwrite. C'est pas très logique.
    Il serait plus logique de passer les élément du tableaux qui eux sont sensés contenir l'adresse de structure _stData.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite(pData[i], sizeof(_stData), 1, pFile);
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Effectivement il s'agit d'un problème d'adressage.

    En C et C++, le nom du tableau correspond à l'adresse du premier octet de ce tableau.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Bonjour,

    J'ai encore une petite question concernant le AnsiString.
    Pour enregistrer une variable de type AnsiString, je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TFileStream *FS = new TFileStream(aFileName, fmCreate);
    AnsiString MaChaine = "blablabla";
    int iSize = MaChaine.Lenght();
    FS->Write(MaChaine.c_str(), iSize);
    delete FS;
    Maintenant je dois récupérer ma chaine, comment dois-je procéder ?


    Merci

  6. #6
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Et bien tu reouvre ton fichier en lecture fmOpenRead par exemple.
    et tu utilise la methode Read du TFileStream.


    PS : Ton premier problème sa fonctionne ?
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

Discussions similaires

  1. implementer une struct dans un .c
    Par jamal dans le forum C
    Réponses: 10
    Dernier message: 10/03/2005, 19h52
  2. Pb lecture d'une struct date
    Par smag dans le forum C++
    Réponses: 13
    Dernier message: 03/03/2005, 22h17
  3. mettre les termes d'un string dans une struct
    Par grand's dans le forum SL & STL
    Réponses: 17
    Dernier message: 29/11/2004, 17h43
  4. Enregistrer une vidéo...
    Par Ptibibi dans le forum DirectX
    Réponses: 3
    Dernier message: 09/06/2004, 18h06
  5. enregistrer une image et un identifiant
    Par dosach dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2004, 17h18

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