Probleme Fichier C++

florianlens Messages postés 6 Date d'inscription vendredi 21 août 2009 Statut Membre Dernière intervention 17 janvier 2011 - 6 janv. 2011 à 11:09
florianlens Messages postés 6 Date d'inscription vendredi 21 août 2009 Statut Membre Dernière intervention 17 janvier 2011 - 6 janv. 2011 à 13:13
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 janv. 2011 à 11:48
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
0
florianlens Messages postés 6 Date d'inscription vendredi 21 août 2009 Statut Membre Dernière intervention 17 janvier 2011
6 janv. 2011 à 12:29
A la lecture apparemment, dès que je rajoute un utilisateur et que je consulte le fichier txt je vois le nom "chiffré"
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 janv. 2011 à 12:46
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
0
florianlens Messages postés 6 Date d'inscription vendredi 21 août 2009 Statut Membre Dernière intervention 17 janvier 2011
6 janv. 2011 à 13:13
Erreur corrigé, j'ai remplacé :

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

par:

off<<AnsiString(code).c_str()<<"\t";
0
Rejoignez-nous