Incomprehension d'une ligne de code

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 17 mars 2004 à 16:45
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 17 mars 2004 à 19:16
Bonjour a tous,
voila je regardais une source du site, une de Brunews sur les boites de dialogue de type login/pass... et il y a une partie de la source que je ne comprend pas... la partie qui verrifie si login et le pass sont correct, voici les deux lignes en question:

 ...
if(*((DWORD*) sztxt) != 0x756C6153) goto erratum;
...
if(*((DWORD*) sztxt) != 0x6F746F74) goto erratum;


voila c'est les verifications que je ne comprend et que j'aimerais que l'on m'explique si possible...
Merci par avance...
Bob...

"La chance accorde ses faveur aux esprits avertis..."

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 mars 2004 à 17:40
ben methode pour verifier par 4 octets sans strcmp sinon il faudrait une chaine de comparaison et meme MsWord est capable de te l'afficher.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
17 mars 2004 à 18:49
voici mes fonctions

int VerifLogin(HWND hdlg)
{
HWND hed;
char sztxt[24];

// on verifie le login
hed = GetDlgItem(hdlg, IDED_LOGIN);
if(GetWindowText(hed, sztxt, 24) != 5)
goto erratum;

GetDlgItemText(hdlg, IDED_LOGIN, sztxt, 24);
if(*(sztxt) != 0x74756C6153)
goto erratum;

// on verifie le pass
hed = GetDlgItem(hdlg, IDED_LOGIN);
if(GetWindowText(hed, sztxt, 24) != 4)
goto erratum;

GetDlgItemText(hdlg, IDED_PSSWRD, sztxt, 24);
if(*(sztxt) == 0x6F746F74)
return 1;

erratum:
PostMessage(hdlg, WM_NEXTDLGCTL, (long) hed, 1);
return 0;
}

BOOL CALLBACK LoginDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg)
{
case WM_INITDIALOG:
SendDlgItemMessage(hdlg, IDED_LOGIN, EM_LIMITTEXT, 23, 0);
SendDlgItemMessage(hdlg, IDED_PSSWRD, EM_LIMITTEXT, 23, 0);
return 1;

case WM_COMMAND:
switch(wParam)
{
 case IDOK:
 {
             if(VerifLogin(hdlg)) // si le pass et login sont bon
 SendMessage(Main, WM_END, 0, 0);
 else
 {
 MessageBox(hdlg, "Mauvais mot de passe.", "Erreur", MB_OK|MB_ICONINFORMATION);
 EndDialog(hdlg, 1);
 }

return TRUE;
 }

 case IDCANCEL:
 {
 EndDialog(hdlg, 1);
 return TRUE;
 }
}
}

return TRUE;
}


le dialogue Login, est appelé au cour du programme pour accéder a une partie special du programme... seulement mon code ne marche pas... pourrais tu m'aider !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 mars 2004 à 19:06
Faut pas que copier/coller, faut aussi bien reflechir a ce qui se fait.
if(GetWindowText(hed, sztxt, 24) != 4)
et 6 lignes avant != 5 goto erratum;
Faut choisir, et tout cela en lisant le meme edit !!!

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
17 mars 2004 à 19:14
effectivement, mais le fait est que quand je valide, cela fait planter mon programme !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
17 mars 2004 à 19:16
en fait kan je valide, je voudrais ke la boite Login se ferme et envoie un message WM_END, a une autre fenetre.
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
Rejoignez-nous