Serialization en mode console??CObject??

Signaler
Messages postés
4
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 février 2003
-
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
-
Bonjour, je voudrais utiliser la serialization en VC++ en mode win32 console.
Pour la serialization, il faut faire deriver la classe de CObject. Le probleme que celà passe à la compil lors d'un projet défini à la base en "MFC project" mais en mode console, la classe CObject n'est pas connue?!
Que faut-il fairte donc pr pouvoir utiliser la serialisation en mode console?

Merci d'avance

8 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
Salut,
pourquoi tu insistes avec ta "serialisation", un terme de mfc comme tous les autres pour masquer le vrai code qu'il finira par produire a ta place mais surement pas mieux.
Surtout quel besoin de mfc en mode console ???
Sur WIN32 on ecrit ainsi:
HANDLE hfl;
DWORD val;
hfl = CreateFile(szName,.....);
if(hfl == INVALID_HANDLE_VALUE) {
// traite erreur...
return;
}
val = 0; WriteFile(hfl, &pData, sizedata, &val, 0);
CloseHandle(hfl);
if(val != sizedata) traite erreur...;
ciao...
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

C'est marrant BruNews mais j'ai l'impression que tu es réfractaire à toute sorte de technologies très utiles et qui permettent la réutilisation du code (templates, STL, maintenant la sérialisation) et que tu aimes bien tout coder à la main. Certains te diront que c'est réinventer la roue à chaque fois, moi je te dirai que c'est une perte de temps.
Pourquoi ?

Kaid
Messages postés
4
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 février 2003

-------------------------------
Réponse au message :
-------------------------------

>
> C'est marrant BruNews mais j'ai l'impression que tu es réfractaire à toute sorte de technologies très utiles et qui permettent la réutilisation du code (templates, STL, maintenant la sérialisation) et que tu aimes bien tout coder à la main. Certains te diront que c'est réinventer la roue à chaque fois, moi je te dirai que c'est une perte de temps.
> Pourquoi ?
>
> Kaid
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> > pourquoi tu insistes avec ta "serialisation", un terme de mfc comme tous les autres pour masquer le vrai code qu'il finira par produire a ta place mais surement pas mieux.
> > Surtout quel besoin de mfc en mode console ???
> > Sur WIN32 on ecrit ainsi:
> > HANDLE hfl;
> > DWORD val;
> > hfl = CreateFile(szName,.....);
> > if(hfl == INVALID_HANDLE_VALUE) {
> > // traite erreur...
> > return;
> > }
> > val = 0; WriteFile(hfl, &pData, sizedata, &val, 0);
> > CloseHandle(hfl);
> > if(val != sizedata) traite erreur...;
> > ciao...
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour, je voudrais utiliser la serialization en VC++ en mode win32 console.
> > > Pour la serialization, il faut faire deriver la classe de CObject. Le probleme que celà passe à la compil lors d'un projet défini à la base en "MFC project" mais en mode console, la classe CObject n'est pas connue?!
> > > Que faut-il fairte donc pr pouvoir utiliser la serialisation en mode console?
> > >
> > > Merci d'avance
> >
>
ben sans meme debattre dessus (malgré le fait que ce que g lu dessus me parait bienb pratique ! ), g un projet c++ a faire et il devra utiliser la serialisation, ce qui est pratique kr bcp de type sont serializables.
Ma question reste donc entiere : comment faire de la serialization en mode console, pr que la classe CObject soie reconnue.?
Messages postés
4
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 février 2003

-------------------------------
Réponse au message :
-------------------------------

> ben sans meme debattre dessus (malgré le fait que ce que g lu dessus me parait bienb pratique ! ), g un projet c++ a faire et il devra utiliser la serialisation, ce qui est pratique kr bcp de type sont serializables.
> Ma question reste donc entiere : comment faire de la serialization en mode console, pr que la classe CObject soie reconnue.?

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > C'est marrant BruNews mais j'ai l'impression que tu es réfractaire à toute sorte de technologies très utiles et qui permettent la réutilisation du code (templates, STL, maintenant la sérialisation) et que tu aimes bien tout coder à la main. Certains te diront que c'est réinventer la roue à chaque fois, moi je te dirai que c'est une perte de temps.
> > Pourquoi ?
> >
> > Kaid
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Salut,
> > > pourquoi tu insistes avec ta "serialisation", un terme de mfc comme tous les autres pour masquer le vrai code qu'il finira par produire a ta place mais surement pas mieux.
> > > Surtout quel besoin de mfc en mode console ???
> > > Sur WIN32 on ecrit ainsi:
> > > HANDLE hfl;
> > > DWORD val;
> > > hfl = CreateFile(szName,.....);
> > > if(hfl == INVALID_HANDLE_VALUE) {
> > > // traite erreur...
> > > return;
> > > }
> > > val = 0; WriteFile(hfl, &pData, sizedata, &val, 0);
> > > CloseHandle(hfl);
> > > if(val != sizedata) traite erreur...;
> > > ciao...
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Bonjour, je voudrais utiliser la serialization en VC++ en mode win32 console.
> > > > Pour la serialization, il faut faire deriver la classe de CObject. Le probleme que celà passe à la compil lors d'un projet défini à la base en "MFC project" mais en mode console, la classe CObject n'est pas connue?!
> > > > Que faut-il fairte donc pr pouvoir utiliser la serialisation en mode console?
> > > >
> > > > Merci d'avance
> > >
> >
> ben sans meme debattre dessus (malgré le fait que ce que g lu dessus me parait bienb pratique ! ), g un projet c++ a faire et il devra utiliser la serialisation, ce qui est pratique kr bcp de type sont serializables.
> Ma question reste donc entiere : comment faire de la serialization en mode console, pr que la classe CObject soie reconnue.?
>
>
>
>
>
>
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
salut Kaid,
non pas refractaire mais contre quand me semble improductif.
Vois comme lapiou s'emmerde avec cette serialiasation qui masque si bien ce qui se fera. Quel benef ? S'il apprenait directement API Win32 ce serait 1 seule, en quoi mon exemple est-il + long a ecrire. C'est tout autant reutilisable puisque WriteFile() etc sont definies une fois pour toutes.
Je vois que tu as vu ce que j'ai mis sur STL, ce n'est pas une question d'avis, je me boorne a regarder les resultats. Un code monstrueux et lourd alors que s'ecrirait beaucoup + vite en C et + performant. Donc encore ou est benef ?
Je suis pour le progres, faut-il qu'il soit au rdv.
Amicalement,
ciao...
Messages postés
4
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 février 2003

-------------------------------
Réponse au message :
-------------------------------
voilà, je veux par exemple mettre un objet ayant ces attributs ds un fichier..comment faire??

private:
int idexpo;
vector<oeuvre> oeuvres;
std::string salle;
std::string titre;
periode periodes;
motscle motscles[10];
std::string resume;

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > ben sans meme debattre dessus (malgré le fait que ce que g lu dessus me parait bienb pratique ! ), g un projet c++ a faire et il devra utiliser la serialisation, ce qui est pratique kr bcp de type sont serializables.
> > Ma question reste donc entiere : comment faire de la serialization en mode console, pr que la classe CObject soie reconnue.?
>
> >
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > >
> > > C'est marrant BruNews mais j'ai l'impression que tu es réfractaire à toute sorte de technologies très utiles et qui permettent la réutilisation du code (templates, STL, maintenant la sérialisation) et que tu aimes bien tout coder à la main. Certains te diront que c'est réinventer la roue à chaque fois, moi je te dirai que c'est une perte de temps.
> > > Pourquoi ?
> > >
> > > Kaid
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Salut,
> > > > pourquoi tu insistes avec ta "serialisation", un terme de mfc comme tous les autres pour masquer le vrai code qu'il finira par produire a ta place mais surement pas mieux.
> > > > Surtout quel besoin de mfc en mode console ???
> > > > Sur WIN32 on ecrit ainsi:
> > > > HANDLE hfl;
> > > > DWORD val;
> > > > hfl = CreateFile(szName,.....);
> > > > if(hfl == INVALID_HANDLE_VALUE) {
> > > > // traite erreur...
> > > > return;
> > > > }
> > > > val = 0; WriteFile(hfl, &pData, sizedata, &val, 0);
> > > > CloseHandle(hfl);
> > > > if(val != sizedata) traite erreur...;
> > > > ciao...
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Bonjour, je voudrais utiliser la serialization en VC++ en mode win32 console.
> > > > > Pour la serialization, il faut faire deriver la classe de CObject. Le probleme que celà passe à la compil lors d'un projet défini à la base en "MFC project" mais en mode console, la classe CObject n'est pas connue?!
> > > > > Que faut-il fairte donc pr pouvoir utiliser la serialisation en mode console?
> > > > >
> > > > > Merci d'avance
> > > >
> > >
> > ben sans meme debattre dessus (malgré le fait que ce que g lu dessus me parait bienb pratique ! ), g un projet c++ a faire et il devra utiliser la serialisation, ce qui est pratique kr bcp de type sont serializables.
> > Ma question reste donc entiere : comment faire de la serialization en mode console, pr que la classe CObject soie reconnue.?
> >
> >
> >
> >
> >
> >
>
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Ta solution fonctionne effectivement très bien pour des données simples (nombres et chaines de caractères) mais comment tu fais pour gérér les relations entre objets ?

La STL c'est du C++ et pour moi le C++ (et les autres languages orienté-objet) est bien mieux structuré qu'un code en C. Bien sûr la STL n'est pas facile à prendre en main et tu peux écrire tes propres containeurs en C, mais elle à l'avantage d'être standard (enfin +/-). Donc réutilisable, connue et exempte de bugs par opposition à un containeur maison.

Pour finir, avec les processeurs actuels à 3 GHz je vois pas trop l'intérêt d'optimiser le code pour gagner 1 ms par là et une demi autre part. Surtout que c'est bien moins productif de faire de l'asm que du C ou C++.

Kaid
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
bonjour au grand thread,
je viens de déposer une réponse à la question de la réutilisation du mécanisme de sérialisation à partir d'un projet console.
http://www.cppfrance.com/article.aspx?Val=1474

Il montre comment utiliser Serialize et/ou << >> sur des types MFC ou Perso.
Remarquons qu'il est toujours possible de faire des Read/Write sur l'archive pour les autres types que l'on veut écrire comme des paquets de Bytes...

j'espère que cela vous aidera.