Hej,
Wykonałem w c++ klasę obsługującą logowanie.
Jest w niej funkcja sprawdzająca czy w pliku baza.txt istnieją login i hasło zwracając true gdy użytkownik został zweryfikowany.
bool logowanie::logUser(std::string n,std::string p)
{
file.open ("baza.txt",std::ios::in);
std::string nn,pp;
while(true)
{
if(file.good())
{
file >> nn >> pp;
if (nn==n&&pp==p)
{
file.close();
return true;
}
}
else break;
}
file.close();
return false;
}
W code blocks działało bez zarzutu - przeniosłem klasę do Buildera 6 i okazuje się, że działa, ale tylko za pierwszym strzałem.
Wywołuję ją przyciskiem:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
if(user.logUser(EditLogin->Text.c_str(),EditHaslo->Text.c_str()))
{
Label1->Caption="OK";
Form2->Close();
}
}
Gdy za pierwszym razem podam niewłaściwe dane funkcja zwróci false, po korekcie i ponownym wywołaniu nawet przy poprawnych stringach nie chce zwrócić true.
Nie wiem w czym problem, czy może to dotyczyć otwierania/zamykania pliku, czy może ponownego pobierania i przekazywania łańcuchów do funkcji.