Probleme Fichier C++

Signaler
Messages postés
6
Date d'inscription
vendredi 21 août 2009
Statut
Membre
Dernière intervention
17 janvier 2011
-
Messages postés
6
Date d'inscription
vendredi 21 août 2009
Statut
Membre
Dernière intervention
17 janvier 2011
-
Bonjour, je dois modifier un code sous C++ Builder et j'ai un problème au niveau des fichiers

bool TUser::readFromFile(std::ifstream &iff)
{
  int numgames;
  char name[255];
  iff>>name;
  if (iff.eof()) return false;
  code = name;
  iff>>numgames;
  if (iff.eof()) return false;
  games.resize(numgames);
  for (int i=0; i<numgames; i++)
  {
if (iff.eof()) return false;
iff >> games[i].date;
    iff >> games[i].game;
iff >> games[i].numgood;
iff >> games[i].numbad;
   }
   return true;
}


void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if (MaskEdit1->Text == "****")
{
  std::ofstream off("users.txt",ios::app);
  String code = Edit1->Text;
  code = code.LowerCase().Trim();
  while (code.Pos(" ")!=0)
  {
   int p = code.Pos(" ");
   code = code.SubString(0,p-1)+code.SubString(p+1,code.Length());
   }

   bool found = false;
   for (unsigned i=0; i<allUsers.size(); i++)
   {
  if (code==allUsers[i].code)
  {
       found = true;
   break;
      }
   }
   if (found)
   {
MessageBoxA(NULL,"L'utilisateur est déjà dans la base de données - Choisir un autre.", "Ok", 0);
return;
   }

  off<<code.c_str()<<"\t";
  off<<0<<"\t"<<endl;
  MessageBoxA(NULL,"Utilisateur ajouté avec succès", "Ok", 0);
}
else
{
 MessageBoxA(NULL,"Erreur de mot de passe", "Erreur", 0);
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 std::ifstream iff("users.txt");
 while (!iff.eof())
 {
   TUser user;
   if (!user.readFromFile(iff)) break;
   allUsers.push_back(user);
 }
}


Lors de l'ajout d'un utilisateur dans un fichier, son nom (code) est immédiatement crypté (par exemple si je met "florian" , il devient "b15dec" dans le fichier)

4 réponses

Messages postés
3838
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
Chiffré pas crypté !

Et non, il n'est pas chiffré, c'est juste que tu imprimes l'adresse de ta variable au lieu du contenu...
Est-ce à la lecture ou à l'écriture que tu as une valeur incorrect ?

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
6
Date d'inscription
vendredi 21 août 2009
Statut
Membre
Dernière intervention
17 janvier 2011

A la lecture apparemment, dès que je rajoute un utilisateur et que je consulte le fichier txt je vois le nom "chiffré"
Messages postés
3838
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
Donc c'est à l'écriture, non ?
Si tu vois une adresse à la place du nom dans le fichier texte, c'est donc que c'est ta fonction d'écriture qui pose problème.

off<<code.c_str()<<"\t";

C'est étrange parce que ceci est correct.

Essaie ceci:
off << std::string(code.c_str()) << "\t";
Mais normalement c'est identique à la première version.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
6
Date d'inscription
vendredi 21 août 2009
Statut
Membre
Dernière intervention
17 janvier 2011

Erreur corrigé, j'ai remplacé :

off<<code.c_str()<<"\t";

par:

off<<AnsiString(code).c_str()<<"\t";