Zastosowałem sie do waszych wskazowek(patrz C++ Builder-szyfrowanie) i teraz sprawdzanie hasla wpisanego przez uzytkownika wyglada tak teraz wyglada u mnie tak:
<font color="red"><font size="12">TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
has2 = ini->ReadString("haslo","1","kowal");
has3 = new char[ has2.Length()+1];
strcpy(has3,has2.c_str());
delete ini;
pas = new char[ Edit1->Text.Length() + 1];
strcpy(pas, Edit1->Text.c_str() );
szyfr(pas);
if(has3==pas){</span></span>
a czesc zapisujaca haslo podane przez uzytkownika tak:
<font color="red"><font size="12">TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
has = new char[ Edit2->Text.Length() + 1 ];
strcpy(has, Edit2->Text.c_str() );
szyfr(has);
ini->WriteString("haslo","1",has);
delete ini; </span></span>
zmienne sa zadeklarowane w ten sposob:
<font color="red"><font size="12">char *pas, *has, has3;
void szyfr(char haslo)
{
const int A = 11; // dowolne > 0
const int B = 17; // dowolne > 0
int hash = 0;
for (int i = 0; haslo[i] != '\0'; i++)
hash += haslo[i] * hash + A;
for (int i = 0; haslo[i] != '\0'; i++)
{
haslo[i] += hash;
hash += haslo[i] * hash + B;
}</span></span>
I nie wiem dlaczego podanie hasla takiego jakie wczesniej zapisalem(czyli warunek:<font color="red"> <font size="12">if(has3==pas)</span></span>) nie jest spelnione. Ustawile break point i wyswietla sie: "cos"="cos" wiec warunek spelnione a on dziala jak by byl falsz. O co chodzi???? czy ktos mi to wyjasni ?????
Aha!!!! jak ktos nie wie o co chodzi to problem opisalem 12 tematow nizej. Please niech ktos pomoze.
//Piter następnym razem pofatyguj się i podaj link do poprzedniego teamtu. nikt nie będzie liczył, tym bardziej, że odstęp pewnie się zmieni. tym razem robię to za ciebie. http://4programmers.net/Forum/viewtopic.php?id=52544
pq