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.