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 :

[MFC] sauvegarde et chargement de fichiers


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Par défaut [MFC] sauvegarde et chargement de fichiers
    Bonjour,

    je souhaiterai effectuer la sauvegarde de fichiers dans mon application SDI. Je n'ai pas de question véritablement précise sur le code, mais plutôt sur la démarche à mettre en place pour effectuer un telle chose.

    Lorsque j'ai créé mon projet, il m'a imméditament créé 1 View, 1 Doc, 1 App et 1 MainFrame. Je ne me sert pas de la vue et du document. Par contre dans ma mainframe, j'ai ajoué des splitters. Ces splitters contiennent différentes classes héritant des MFC, dont 3 classes héritant de CEditView.

    Je souhaite désormais pouvoir enregistrer le texte contenu dans ces CEditView et pouvoir le charger. Afin de pouvoir le réafficher dans mes Views. Je m'interroge sur la méthode la plus facile à mettre en place pour effectuer ceci.

    Si vous pouviez m'éclairer ce serait coOOOol. J'ai précisé un ensemble de questions si dessous, dont les réponses, je l'espère pourrait m'aider.

    Questions:
    -Faut il créer des classes Doc correspondant aux views pour sauvegarder leur contenu. Si oui, comment associer le document à la vue.
    -Y a t'il d'autres méthodes que le passage par une classe document pour sauvegarder une vue? Si oui, qu'elle méthode est la plus judicieuse à utiliser?
    -Comment charger un document sauvegardé et le réaffiché correctement dans l'interface (sachant que j'ai trois vue qui hérite de CEditView et qu'elle corresponde à un type de texte en particulier, soit un script, soit un fichier contenant des trames, etc.)
    -Qu'est ce que la serialisation exactement?
    -Quel est le nombre maximal de caractères qui peuvent être contenu dans un CEditView.

    Merci de votre attention.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Par défaut désolé pour les nombreuses fautes de frappe [nt]
    nt : non-texte

  3. #3
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut Re: [MFC] sauvegarde et chargement de fichiers
    Citation Envoyé par Aradesh
    Bonjour,
    ...
    >>-Faut il créer des classes Doc correspondant aux views pour sauvegarder leur contenu. Si oui, comment associer le document à la vue.
    Non, pas forcément car tes vues sont pour le même document.
    Dans ta classe Doc tu peut récupérer des pointeurs sur les vues et donc les données associées grace à ce 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    //*******************************************************************
    // Retourne la vue de type désiré 
    //*******************************************************************
    CView * ClsMyDoc::GetView(int Type)
    	{
    	POSITION ViewPos = this->GetFirstViewPosition();
    	bool Founded		 = false;
    	CView *CurView	 = NULL;
     
    	if(ViewPos != NULL)
    		{
    		do
    			{
    			CurView = this->GetNextView(ViewPos);
    			CRuntimeClass * RTClasse = CurView->GetRuntimeClass();
     
    			switch(Type)
    				{
    				case UNDEFINED		: return NULL;	break;
    				case 0	: if(RTClasse == RUNTIME_CLASS(ClsMyView0) ){Founded = true;}break;
    				case 1			: if(RTClasse == RUNTIME_CLASS(ClsMyView1))		{Founded = true;}break;
    				case 2			: if(RTClasse == RUNTIME_CLASS(ClsMyView2))		{Founded = true;}break;
    				}
     
    			}while(!Founded);
    			return CurView;
    		}
    	return NULL;
    	}
    //Ou ClsMyView0 ,  1 et 2 sont tes classes de EditView
    et Après faire utiliser Serialize

    Citation Envoyé par Aradesh
    Bonjour,
    ...
    >>-Y a t'il d'autres méthodes que le passage par une classe document pour sauvegarder une vue? Si oui, qu'elle méthode est la plus judicieuse à utiliser?
    Tu peut toujours faier une méthode Save, qui écris dans un fichier le contenus de tes textes.
    Utiliser serialize c'est bien car ça te permet de faire la sauvegarde et le chargment dnas la même méthde grâce à CArchive::IsStoring. Y as pas forcement de gros avantage....

    Citation Envoyé par Aradesh
    Bonjour,
    ...
    >>-Comment charger un document sauvegardé et le réaffiché correctement dans l'interface (sachant que j'ai trois vue qui hérite de CEditView et qu'elle corresponde à un type de texte en particulier, soit un script, soit un fichier contenant des trames, etc.)
    Voir ci-dessus.
    Citation Envoyé par Aradesh
    Bonjour,
    ...
    >>-Qu'est ce que la serialisation exactement?
    Ben c'est juste une interface pour la sauvegarde. Sache que quoi qu'il arrive, il faudra que tu fasse ta méthode de sauvegardedans uun fichier.
    Citation Envoyé par Aradesh
    Bonjour,
    ...
    >>-Quel est le nombre maximal de caractères qui peuvent être contenu dans un CEditView.
    Si mes souvenirs sont bon c'est 2^32 / 2 caractère soit 2147483648 caractère( en gros 2Go), c'est à vérifier....

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Par défaut ok!
    merci beaucoup pour toutes ces explications très claires.

    j'attends toutefois devoir si mon truc marche en pratique avant de cliquer sur résolu. (On ne sait jamais, je pourrai avoir d'autres questions)

  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
    salut,
    pour la serialisation voir la faq:
    http://c.developpez.com/faq/vc/?page...HowToSerialize

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Par défaut merci
    Merci à tous les deux,

    j'ai fait des tests, ça marche.
    Je devrai m'en sortir pour la suite.

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

Discussions similaires

  1. [TClientDataSet] Erreur de chargement du fichier MIDAS.DLL
    Par Manopower dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/08/2016, 14h08
  2. [Débutant] Sauvegarde et chargement sur fichier text
    Par Invité dans le forum C#
    Réponses: 2
    Dernier message: 28/02/2012, 22h42
  3. sauvegarde et chargement à partir d'un fichier
    Par fomazou dans le forum Débuter
    Réponses: 7
    Dernier message: 14/05/2009, 22h23
  4. [MFC] Limitation du nombre de fichiers...
    Par chronos dans le forum MFC
    Réponses: 5
    Dernier message: 02/06/2004, 10h40
  5. [MFC] Fenêtre de chargement
    Par Kant dans le forum MFC
    Réponses: 16
    Dernier message: 26/02/2004, 15h16

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