Passwort eingeben
-
für deine mühe sei herzlich gedankt. nur leider funktioniert der code überhaupt nicht und bin leider auch nicht in der lage dies zu ändern! entweder bist du so nett und wir gehen das schritt für schritt durch, oder (sehr wahrscheinlich) lasse den gedanken fallen,
mfg
-
Ganz geil finde ich
Hinweiß
PISA :schland:
-
Sag mir welche Stelle du nicht verstehst... ist eigentlich rel. einfach:
void CMyDialog::OnOK(void)CMyDialog ist halt die Klasse von deinem Dialog... kann natürlich auch anders heißen

OnOK ist die Memberfunktion der Klasse, die beim klicken auf den Button(in diesem Fall IDOK) ausgelöst wird...CWnd* pwndPW = GetDlgItem(IDC_MYEDITCTRL);Wir holen uns mit der CDialog Funktion GetDlgItem einen Pointer auf unser Password Edit Control... (IDC_MYEDITCTRL muss natürlich durch die ID deines Controls ersetzt werden)...
CString strPW; pwndPW->GetWindowText(strPW);Wir legen die lokale Variable strPW an und holen dann mit der CWnd Funktion GetWindowText uns den Text des Password Controls in unsere neue lokale Variable.
if (strcmp(strPW.GetBuffer(), _T("MyPassword")) == 0) MessageBox("Das Passwort ist richtig!", "Hinweiß", MB_OK | MB_ICONINFORMATION); else MessageBox("Das Passwort ist leider FALSCH!", "Fehler", MB_OK | MB_ICONERROR);Wir vergleichen mit strcmp das was in strPW steht mit dem von uns definierten Password... in dem Fall "MyPassword"(ohne ") ... wenn beim Vergleich 0 rauskommt sind die Strings identisch, andernfall nicht... also gucken wir in der if obs gleich 0 ist... wnen ja zeigen wir die MessageBox an, in der steht dass das PW richtig ist, andernfalls, dass das PW falsch ist...
Noch Fragen?
-
hallo!
mein code:void CTabCtrlDlg::OnChangeEdit2() { CWnd* pwndPW = GetDlgItem(IDC_BUTTON33); CString strPW; pwndPW->GetWindowText(strPW); if (strcmp(strPW.GetBuffer(), _T("MyPassword")) == 1234) MessageBox("Das Passwort ist richtig!", "Hinweis", MB_OK | MB_ICONINFORMATION); else MessageBox("Das Passwort ist leider FALSCH!", "Fehler", MB_OK | MB_ICONERROR); }bekomme jetzt den Fehler:
H:\CPLUS\MFC_KURSE\EIGENE\TABCTRL\TabCtrlDlg.cpp(734) : error C2660: 'GetBuffer' : Funktion akzeptiert keine 0 Parameter
-
dann mach aus
strPW.GetBuffer()folgendes:
strPW.GetBuffer(strPW.GetLenght())
-
leider kommen andere fehler!
das ist der geänderte code:if (strcmp(strPW.GetBuffer(strPW.GetLenght()), _T("MyPassword")) == 1234)fehlermeldung:
in AFX.h:
C:\Programme\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h(368) : Siehe Deklaration von 'CString'
in dlg:
H:\CPLUS\MFC_KURSE\EIGENE\TABCTRL\TabCtrlDlg.cpp(734) : error C2039: 'GetLenght' : Ist kein Element von 'CString'
-
oldi schrieb:
if (strcmp(strPW.GetBuffer(strPW.GetLenght()), _T("MyPassword")) == 1234)Sollte das wirklich gehen? Es soll doch geprüft werden ob das Passwd richtig ist oder nicht? Also ob die Eingabe gleich dem Passwort ist, also sollte auf == 0 geprüft werden.
MSDN Auszug: Return Value The return value for each of these functions indicates the lexicographic relation of string1 to string2. Value Relationship of string1 to string2 < 0 string1 less than string2 0 string1 identical to string2 > 0 string1 greater than string2
-
Jop... wie in meinem Code auch richtig zu lesen ist

Tjo... also... Platform SDk Updaten würde ich mal vorschlagen... denn:
CString::GetLenght ist selbe in der 98er MFC schon drin
Weiß grad net welche Version das ist...
-
auch das bringt gleichen fehler:
if (strcmp(strPW.GetBuffer(strPW.GetLenght()), _T("MyPassword")) == 0)
-
Hmm...
1. Lad dir das aktuelle Platform SDK herunter
2. Installier mal den 2003er Compiler in deine IDE... damit kannst de auch MFC Anwendungen erstellen... hast aber wenigstens nen halbwegs aktuellen Stand
-
danke, mache ich