
|
|
Auteur
|
Message
|
1
|
|
|
|
bonjour
je suis entrain de creer un logiciel de gestion de bibliotheque,j'essaye de creer des fenetre pour que l'utilisateur puisse entrer son login et son mot de passe,pour stocker ces donnees j'ai utilise des pointeurs sur chaine de caracteres
mais je croix qu'il y a un probleme d'allocation de la memoire pour les chaines car qaund je tape un mot ds la fenetre du login je trouve qu'il a ete memorise ds la chaine destinee a memoriser le mot de passe a partir du premeir caractere vide.
un quelconque coup de main me servira enormement surtout qu'il s'agit de mon projet d'ete
merci d'avance
|
|
|
|
|
il nous faudrait deja la partie du code qui ne vas pas
|
|
|
|
|
int screen_42()
{int pos[16]={300,70,500,90,300,130,500,150,300,190,500,210,300,250,500,270};
int coord[8]={200,450,250,470,255,450,315,470};
char *login,*text,*pwd,*newpwd,*oldpwd;
int mode,pressedkey=-1,window=1,click=invalid,lighticone=-1,textindice=-2,call1=0,call2=0,call3=0,call4=0,nwindow=1;
pwd=(char *) malloc(sizeof(char));
login=(char *) malloc(sizeof(char));
newpwd=(char *) malloc(sizeof(char));
oldpwd=(char *) malloc(sizeof(char));
text=(char *) malloc(sizeof(char));
login[0]='\0';
oldpwd[0]='\0';
newpwd[0]='\0';
pwd[0]='\0';
petit_cygle(125,430);
setfillstyle(1,WHITE);
bar(pos[0],pos[1],pos[2],pos[3]);
bar(pos[4],pos[5],pos[6],pos[7]);
bar(pos[8],pos[9],pos[10],pos[11]);
bar(pos[12],pos[13],pos[14],pos[15]);
setcolor(RED);
settextstyle(2,0,3);
setusercharsize(1,1,1,1);
bar(255,450,315,470);
bar(200,450,250,470);
outtextxy(260,455,"PRECEDANT");
outtextxy(205,455,"VALIDER");
setcolor(LIGHTCYAN );
outtextxy(100,73,"taper votre login");
outtextxy(100,133,"taper votre ancien mot de passe");
outtextxy(100,193,"taper un nouveau mot de passe");
outtextxy(100,253,"retaper le nouveau mot de passe");
mode=viewchar;
callmouse();
login=gettextwindow(&pos[0],&pos[1],&pos[2],&pos[3],&call1,login,&pressedkey,&mode,coord,&click,&lighticone,&textindice,text,&nwindow);
call1=1;
do
{if(pressedkey==9)
{if(window==1)
{mode=viewchar;
window++;
oldpwd=gettextwindow(&pos[4],&pos[5],&pos[6],&pos[7],&call2,oldpwd,&pressedkey,&mode,coord,&click,&lighticone,&textindice,text,&nwindow);
if(call2==0) call2++;
}
else if(window==2)
{window++;
newpwd=gettextwindow(&pos[8],&pos[9],&pos[10],&pos[11],&call3,newpwd,&pressedkey,&mode,coord,&click,&lighticone,&textindice,text,&nwindow);
if(call3==0) call3=1;
}
else if(window==3)
{window++;
pwd=gettextwindow(&pos[12],&pos[13],&pos[14],&pos[15],&call4,pwd,&pressedkey,&mode,coord,&click,&lighticone,&textindice,text,&nwindow);
if(call4==0) call4=1;
}
else if(window==4)
{window=1;
mode=viewchar;
login=gettextwindow(&pos[0],&pos[1],&pos[2],&pos[3],&call1,login,&pressedkey,&mode,coord,&click,&lighticone,&textindice,text,&nwindow);
}
}}while(click!=valid || pressedkey==2);
return 0;}
normalement tout va bien sauf que la chaine de caractere pointe par newpwd ne recoit rien et le mot tape est plutot concatene a la chaine pointe par login
-->Message édité par emna salhi le 08/08/2006 14:07:13<--
|
|
|
|
|
merci Beno ,je suis parvenue a resoudre mon probleme
en fait l'instruction d'allocation que je mettais(malloc(sizeof(char)) permet d'allouer de l'espace pr un seul caractere
alors il faudrait soit laisser au compilateur la tache d'allocation de la memoire en utilisant des chaines de longueurs predefinies de type:
char login[longueur]
soit ecrire malloc(longueur *sizeof(char))
|
|
arriere, band de newbies ^^
|
|
|
Un conseil : utilises plutot les std::string tant que possible pour ce qui est gestion des chaines de caracteres!
De plus, ton programme aurra une grosse faille sécurité la : si tu tapes un pseudo plus grand que "longueur", les octets suplémentaires s'écriront sur la mémoire consécutive à ta chaine de caractères...
|
|
|
|
|
|
merci icare de prendre de votre temps pr me repondre mais je vous demande gentillement de m'expliquer un peux de quoi sagit le std::strig
|
|
arriere, band de newbies ^^
|
|
|
D'abord, std c'est une librairie standard qui inclus plein de trucs dont les vectors, les maps, les strings, etc...
Bref, std::string, c'est une classe qui permet de gérer facilement les chaines de caractères, sans risquer la fuite mémoire, etc!
petits exemples de code :
using namespace std;
string str1 = "hello";
string str2 = " world";
string res = str1 + str2;
cout<<res; // affiche "hello world"
apres, ya plein de fonctions utiles de recherche de caractères, etc ! du genre :
string str = "salut toi";
string res = str.substr(0,5);
cout<<res; // renvoie "salut", c'est a dire 5 lettres a partir du caractères 0 de 'str'
c'est tout comme ca... ca simplifie la vie.
Si tu connais pas std, renseigne toi, c'est une des libs les plus utiles quel que soit ton projet ... ( std::vector pourra t'etre tres utile aussi.)
|
|
|
|
|
Salut !
Je passais par là et je me demandais quelle était cette fonction gettextwindow; je n'ai pas trouvé de doc dessus, et j'étais intéressé par la signature de cette méthode. Si tu pouvais me dire si c'est du C ou du C++, et éventuellement me renvoyer vers un lien documentant cette fonction. Merci.
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
|
|
|
|
|
Minus-et-Cortex a écrit :
Salut !
Je passais par là et je me demandais quelle était cette fonction gettextwindow; je n'ai pas trouvé de doc dessus, et j'étais intéressé par la signature de cette méthode. Si tu pouvais me dire si c'est du C ou du C++, et éventuellement me renvoyer vers un lien documentant cette fonction. Merci.
salut
en fait c une fonction que j'ai cree moi meme ,elle fait appels a 4 autres fonctions et permets de cree une fenetre ou on peut taper une chaine de caractere ,inserer un caractere a une position qeulconque et effacer un caractere a une position quelconque .elle retourne la chaine de caractere tape et c du programmation C.
mais en tout cas je pense qu'il n y pas une grande differences entre le c et le c++ ,a mon avis la programmation est l'idee non pas le langage.
Pour le moment je ne peux pas donner le code de cette fonction car elle fait partie de mon projet d'ete mais le jour ou je remetterai mon projet je te le donnerai.ca cera debut septembre
|
|
arriere, band de newbies ^^
|
|
|
C'est vrai en partie, mais le choix du bon langage permet de mieux concrétiser l'idée. et le choix est pas si peu important que ca !
|
|
1
|
|

|


|