[C++] Base de données

Fermé
Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 - 14 oct. 2010 à 04:07
Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 - 17 oct. 2010 à 21:33
Bonjour,
J'ai fait une petite classe qui gère la base de données et une fonction qui récupère des données d'une base de données. Voici le code de ma fonction:
entry database::load()
{
	char tmp[1];
	entry data;
	ifstream file(filename, ios::binary);
		if(!file)
			exit(1);
	if(load_amount!=0)
		file.seekg(pos);

	file.read(data.name, 26);               //Name
	file.read(tmp,1);

	//file.read(doublebuff, sizeof(double));  //Amount
	file>>data.amount;
	file.read(tmp,1);
	
	file>>data.cash;   //Cash
	file.read(tmp,1);
	
	file>>data.date;			//Date
	file.read(tmp,1);
	
	file>>data.month;			//Month
	file.read(tmp,1);

	file>>data.year;			//Year
	
	file.read(tmp,1);
	file>>data.type;
	file.read(tmp,1);
	
	pos=file.tellg();
	if(file.eof())
		eof=true;
	load_amount++;
	return data;
}

Ma classe:
class database
{
private:
	const char* filename;
	streampos pos;
	bool eof;
	int load_amount;
	int eof_error;
public:
	database(const char* filename);
	int save(char* name, double amount, double cash, int date, int month, int year, char* type);
	int save(entry data);
	entry load();
	void clear();
	bool is_eof();
	~database();

};


et ma structure(entry)
struct entry
{
	void write();
	char name[26];
	char type[10];
	double amount;
	double cash;
	int month;
	int date;
	int year;
};

Mon problème, c'est que j'ai une fonction qui exécute load jusqu'à ce que db.is_eof() (ou db est un objet de type database) soit vrai. Mais il ne s'exécute toujours qu'une fois. Cela fait environ une semaine que j'essais de trouver le problème mais je ne trouves rien.

Quelqu'un saurait ce qui pourrait être la cause de cette erreure?

P.S. Quand je l'ouvre en debug je remarque souvent que database::pos._MyOff =-1 dès que la boucle s'est exécutée au moins une fois. Et quand j'écris les données j'obtiens
Nom|1|1|10|10|10|TypeNom

1 réponse

Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 40
17 oct. 2010 à 21:33
personne?
0