begin process at 2012 02 09 14:54:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CLASSE D'OUVERTURE ET D'ECRITURE DE FICHIER EN MODE BINAIRE ET TEXTE SOUS VC++

CLASSE D'OUVERTURE ET D'ECRITURE DE FICHIER EN MODE BINAIRE ET TEXTE SOUS VC++


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Débutant Date de création :01/12/2002 Date de mise à jour :01/12/2002 01:20:20 Vu / téléchargé :3 920 / 140

Auteur : dominiquox

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Classe qui peut s'averer très utile pour ceux qui ne comprennent pas comment on fait pour ouvrir/ecrire un fichier en mode texte/binaire. Créé sous VC++ 6.0. Seul petit bug : La fonction permettant de récuperer le contenu d'un fichier en mode texte qui bugge ! Mais si quelqu'un connait un moyen d'y arriver, qu'il n'hesite pas à me le dire a mon adresse
e-mail : goofy.jp@wanadoo.fr

Source

  • // ESfile -> Fichiers d'entrée/sortie du C++
  • // En têtes necessaires
  • #include <iostream>
  • #include <fstream>
  • // Les using. J'aurais pu mettre using namespace std mais pour eviter les erreurs ...
  • using std::cout;
  • using std::cin;
  • using std::ofstream;
  • using std::ifstream;
  • using std::endl;
  • using std::ios;
  • // Instances
  • ofstream outfile;
  • ifstream infile;
  • class ESFILE
  • {
  • public:
  • //Constructeurs et Destructeurs
  • ESFILE() {} ;
  • ~ESFILE() {} ;
  • // Methodes
  • ASE_open(char * name_file, bool mode);
  • ASE_print(char * chaine, bool end);
  • ASS_open(char * name_file);
  • char * ASS_get();
  • ABE_open(char * name_file);
  • ABE_write(char *chaine, int longueur);
  • ABS_open(char * name_file);
  • ABS_get(char * entry, int position);
  • AE_close();
  • AS_close();
  • bool file_is_opened() {return IS_OPENED;} ;
  • private:
  • bool IS_OPENED;
  • };
  • ESFILE::ASE_open(char * name_file, bool mode)
  • {
  • if (mode == false)
  • outfile.open(name_file,ios::app);
  • else
  • outfile.open(name_file,ios::trunc);
  • IS_OPENED = true;
  • };
  • ESFILE::ASE_print(char *chaine, bool end)
  • {
  • if (end == true)
  • outfile << chaine << endl ;
  • else
  • outfile << chaine ;
  • };
  • ESFILE::ASS_open(char *name_file)
  • {
  • infile.open(name_file);
  • IS_OPENED = true ;
  • };
  • char * ESFILE::ASS_get()
  • {
  • char ch;
  • int t;
  • char * contenu ;
  • while (infile.get(ch))
  • {
  • contenu[t] = ch ;
  • t++;
  • };
  • return contenu ;
  • };
  • ESFILE::AE_close()
  • {
  • outfile.close();
  • IS_OPENED = false;
  • };
  • ESFILE::AS_close()
  • {
  • infile.close();
  • IS_OPENED = false;
  • };
  • ESFILE::ABE_open(char *name_file)
  • {
  • outfile.open(name_file,ios::binary);
  • IS_OPENED = true ;
  • };
  • ESFILE::ABE_write(char *chaine, int position)
  • {
  • outfile.write(chaine, position);
  • };
  • ESFILE::ABS_open(char *name_file)
  • {
  • infile.open(name_file,ios::binary);
  • IS_OPENED = true ;
  • };
  • ESFILE::ABS_get(char * entry, int position)
  • {
  • infile.read(entry,position);
  • };
  • /* EXPLICATIONS
  • A signifie Acces
  • B signifie Binaire(Direct)
  • S signifie Sequentiel
  • S signifie Sortie(lecture)
  • E signifie Entrée(Ecriture)
  • name_file : Nom du fichier à ouvrir
  • mode : false pour le mode Ajout (ecrire a la fin du fichier) et true pour remplacer le fichier
  • s'il existe
  • end : true pour placer un retour chariot (\n) a la fin ou false pour continuer sur la même ligne
  • chaine : chaine ou Caractère à ecrire
  • position : Position à lire
  • longueur : Longueur de la chaine à ecrire
  • entry : Caractere cible où placer le resultat
  • La fonction file_is_opened retourne true si un fichier est ouvert ou false dans le cas contraire
  • ! ATTENTION !
  • - Ne pas ouvrir plusieurs fichiers a la fois
  • - Ne pas fermer un fichier si aucun n'est ouvert
  • - Ne pas ecrire ou lire une valeur si aucun fichier n'a été ouvert
  • - Arreter de se prendre pour un Programmer Master parcequ'on a trouvé une SuperClasse ... */
// ESfile -> Fichiers d'entrée/sortie du C++
// En têtes necessaires
#include <iostream>
#include <fstream>

// Les using. J'aurais pu mettre using namespace std mais pour eviter les erreurs ...
using std::cout;
using std::cin;
using std::ofstream;
using std::ifstream;
using std::endl;
using std::ios;

// Instances
ofstream outfile;
ifstream infile;

class ESFILE
{
public:
	//Constructeurs et Destructeurs
	ESFILE() {} ;
	~ESFILE() {} ;
	
	// Methodes
	ASE_open(char * name_file, bool mode);
	ASE_print(char * chaine, bool end);

	ASS_open(char * name_file);
	char * ASS_get();

	ABE_open(char * name_file);
	ABE_write(char *chaine, int longueur);

	ABS_open(char * name_file);
	ABS_get(char * entry, int position);

	AE_close();
	AS_close();

	bool file_is_opened() {return IS_OPENED;} ;

private:
	bool IS_OPENED;
};

ESFILE::ASE_open(char * name_file, bool mode)
{
	if (mode == false)
		outfile.open(name_file,ios::app);
	else
		outfile.open(name_file,ios::trunc);
	IS_OPENED = true;
};

ESFILE::ASE_print(char *chaine, bool end)
{
	if (end == true)
		outfile << chaine << endl ;
	else
		outfile << chaine ;
};

ESFILE::ASS_open(char *name_file)
{
	infile.open(name_file);
	IS_OPENED = true ;
};

char * ESFILE::ASS_get()
{
	char ch;
	int t;
	char * contenu ;

	while (infile.get(ch))
	{
		contenu[t] = ch ;
		t++;
	};

	return contenu ;
};

ESFILE::AE_close()
{
	outfile.close();
	IS_OPENED = false;
};

ESFILE::AS_close()
{
	infile.close();
	IS_OPENED = false;
};

ESFILE::ABE_open(char *name_file)
{
	outfile.open(name_file,ios::binary);
	IS_OPENED = true ;
};

ESFILE::ABE_write(char *chaine, int position)
{
	outfile.write(chaine, position);
};

ESFILE::ABS_open(char *name_file)
{
	infile.open(name_file,ios::binary);
	IS_OPENED = true ;
};

ESFILE::ABS_get(char * entry, int position)
{
	infile.read(entry,position);
};

/* EXPLICATIONS
A signifie Acces

B signifie Binaire(Direct)
S signifie Sequentiel

S signifie Sortie(lecture)
E signifie Entrée(Ecriture)

name_file : Nom du fichier à ouvrir
mode : false pour le mode Ajout (ecrire a la fin du fichier) et true pour remplacer le fichier
	   s'il existe
end : true pour placer un retour chariot (\n) a la fin ou false pour continuer sur la même ligne
chaine : chaine ou Caractère à ecrire
position : Position à lire
longueur : Longueur de la chaine à ecrire
entry : Caractere cible où placer le resultat

La fonction file_is_opened retourne true si un fichier est ouvert ou false dans le cas contraire

! ATTENTION !
- Ne pas ouvrir plusieurs fichiers a la fois
- Ne pas fermer un fichier si aucun n'est ouvert
- Ne pas ecrire ou lire une valeur si aucun fichier n'a été ouvert
- Arreter de se prendre pour un Programmer Master parcequ'on a trouvé une SuperClasse ... */


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de dominiquox le 01/12/2002 01:49:32

Arghh, j'ai oublié de dire que je l'ai fait pour tourner sous Console Win32 pour VC++ ou Easywin pour Borland. Pour windows, je sais pas ce que ça va donner parceque je vais me mettre sous windows mais j'y suis pas encore !

Commentaire de trinitacs le 01/12/2002 15:30:27

Tu nous as pas réinventé la roue, lol c'est terrible, je faisais la même chose en VGA :)
Tu devrais proposer plus de mode d'ouverteur. Exemple créer une variable de type enum comprennant tous les modes car il y en a pas mal.
Ce serait cool que t'as fonction retourne un bool afin d'informer que l'ouverture c'est bien passée. Je m'explique: Dans ton cas un fichier peut-être mal ouvert et ta classe ne le remarquera pas, si le fichier spécifier n'existe pas ( mode lecture).
Pourquoi les deux pointeur de fichiers ne sont pas dans ta classe. Ça permetterait d'ouvrir plusieurs fichier en même temps.
Sinon t'as fonction get est beaucoup trop compliqué. Tu devrais faire une fonction get qui renvoi simplement un octect et une autre fonction get qui appel plusieurs fois la get simple.

Commentaire de trinitacs le 01/12/2002 15:39:39

Il y a quand même beaucoup de contrainte dans ta classes.
Ta var IS_OPENED doit-être true si et seulement si le fichier est bien ouvert. Ainsi avant de lire ou d'écrire tu met un if ( open = true ) et tout ce passera bien. Aussi tu ne vérifies pas si on écrit en dehors du fichier. genre position négative ou trop grande.

Voilà j'espère t'avoir aider pour améliorer ta classe.

Commentaire de dominiquox le 04/12/2002 13:38:00

Désolé, mais j'ai fait mon possible. Maintenant, c'est à ceux qui le veulent de m'envoyer une amélioration à : goofy.jp@wanadoo.fr. Désolé, Désolé ...

Commentaire de trinitacs le 04/12/2002 15:45:31

pk désolé????
Le seul problème c'est que tu as réinventé la roue, mais parfois c'est amusant de le faire :)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,560 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales