2 pièce(s) jointe(s)
debutant delphi (habitué Tpascal7 objet)- Stack overflow (Gnii?)
Delphi 6 perso....
salut, j'ai beau retourner mon petit programme simplicime en long en large et en travers, mais ca marche PO.... Et ca plante a des endroits vraiment bizarre... là ou il ne devrais pas avoir de PB... , j'ai lu que delphi gere mal les sous programme C, j'ai SETACL.ocx d'installé, est ce que ca viendrais des string, et de leurs mauvaise manipulation ? comment je dois régler ca ? (si ca viens de ca)
l'endrois marqué d'une fleche, une foi retirer ca plante plus. en fait l'utilisation normal du programe ne provoque pas d'erreur, par contre dès que l'on rempli une case mot de passe (la seconde de verification) sans remplir la premiere, puis si on appuie sur le checkbox "protection" rien ne va plus il s'embale et paf stack overflow... je pige pas...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
//========================================================
procedure TMForm.ProtectionClick(Sender: TObject);
begin
//si le mot de passe n'existe pas encore ou que la protection n'st pas activÈe
if MForm.Protection.Checked then
begin
if (MForm.Password.Text=MForm.password2.Text) and (Length(MForm.Password.Text)>0) then
begin //les 2 mots de passe sont prÈsent et identique
//on met a jour l'objet config
pwd:=MForm.password.Text;
//on sauvegarde la config dans a base de registre.
MForm.savConfigClick(Sender);
//on gËle les options de config
MForm.PrinterUNC.Enabled:=False;
MForm.UserUNC.Enabled:=False;
MForm.password2.Enabled:=False;
MForm.password2.text:='';MForm.password.text:='';
MForm.savconfig.Enabled:=False;
PP_Output('- Configuration protÈgÈe ...');
end
else begin
MForm.Protection.Checked:=False; // <======VERS ICI BOOOOM PLANTAGE
PP_Output('-ERREUR- Le mot de passe est nul, ou la confirmation n''est pas identique ...');
end;
end
else begin
// sinon la config est dÈj protÈgÈ. Avant de valider le retrait de la protection
// on compare le mot de passe dans config a celui dans password // ShowMessage(Msg)
if pwd = MForm.password.Text then
begin
// si il est identique on dÈverouille tout.
MForm.PrinterUNC.Enabled:=True;
MForm.UserUNC.Enabled:=True;
MForm.password2.Enabled:=True;
MForm.savconfig.Enabled:=True;
MForm.password2.text:='';MForm.password.text:='';
PP_Output('- Configuration modifiable.');
end else begin
// SINON, on recoche la case pour annuler le changement et on affiche un message d'erreur.
MForm.Protection.Checked:=True;
PP_Output('-ERREUR- Mauvais mot de passe ...');
end;
end;
end; |
si vous trouvez merci d'avance.... j'ai essayé de réécrire les sructures if then else de différentes façon ca change rien. le code en piece jointe.