Si mon mot de passe est "correct"... Modifie, sinon passe!

Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 31 oct. 2012 à 16:55
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 - 3 nov. 2012 à 21:27
Salut!

C'est juste une question de passer au module de modification si le mot de passe est incorrect. Curieusement, même s'il est incorrect... Il modifie. Juste une correction s'il vous plaît dans mon code. Merci


var pass: string;{variable password}
begin
////////////

//end;

////////////

 case combobox1.ItemIndex of
 0: begin
 ///////////////////
i:=(i+1);
if i < 3
then
begin
    pass := inputbox('Mot de passe:','');
    if pass = 'strong'
    then
        begin
             //languages;
        end
    else
        if pass = ''
        then
            begin
                 beep;
                 messagedlg('Veuillez entrer un mots de pass...',mtWarning,[mbOK],0);{entrer un mots de pass}
            end
        else{sinon}
            if (pass <> '') and (pass <>'strong')
            then
                begin
                     beep;
                     messagedlg('Le mot de passe est incorrect !!!',mtError,[mbOK],0); 
     then begin // j'aimerai passer à l'autre module si seulement si le mot de passe est correct 
end else  
    
 //////////////////

maison.Edit;
maison.FieldByName('matricule').AsString:= structure1.Text;
maison.Post;



Developper est une dimension pour moi.
Leader2000

6 réponses

dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
31 oct. 2012 à 17:58
Salut
commence par vérifier ce bout de code : il manque au moins un "IF condition" :

else{sinon}
if (pass <> '') and (pass <>'strong')
then
begin
beep;
messagedlg('Le mot de passe est incorrect !!!',mtError,[mbOK],0);
(ici) then begin // j'aimerai passer à l'autre module si seulement si le mot de passe est correct
end else

vérifie aussi les begin-end (autant de chaque)

Donne nous le code réel, ce sera plus simple

Dubois77
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
1 nov. 2012 à 09:37
Curieusement, je ne vois pas trop bien ou se pose le problème. A moins que je me trompe.


else{sinon} 
if (pass <> '') and (pass <>'strong') 
then 
begin 
beep; 
messagedlg('Le mot de passe est incorrect !!!',mtError,[mbOK],0); 
(ici) then begin // j'aimerai passer à l'autre module si seulement si le mot de passe est correct 
end else 



Developper est une dimension pour moi.
Leader2000
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
1 nov. 2012 à 21:38
Bonjour,
La syntaxe pour inputbox est la suivante:
InputBox(Titre de la boite, Invite, Chaine renvoyée par défaut);
Vérifies tes if then begin ..... end et les else begin .... end il en manque!!
A quoi sert la ComboBox?

Pass := InputBox('Mot de passe', 'Saisir un mot de passe SVP!', '');
{* Si on appuie sur OK Pass prend comme valeur ce qui a été saisi si rien na été saisi pass prend comme valeur '' qui est la chaine indiquée comme valeur par défaut
Si on appuie sur Annuler Pass rend comme valeur ''. La chaine indiquée comme valeur par défaut *}
If Pass <> 'strong' then begin
MessageDlg('Le mot de passe est incorrect !!!',mtError,[mbOK],0);
// Peut etre incrémenter un compteur du Nb de fois ou l'utilisateur peut recommencer la saisie
end
Else begin
// Le MP est correct. Faire les modifications
End;

Ca devrait suffire!
pierrot
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
2 nov. 2012 à 10:36
Bonjour,
Après plus de réflexion ton code me semble bien bizarre. Voici un exemple pour lancer une opération avec saisie d'un mot de passe.
Dans l'unité principale on appelle la fiche fMotPasse contenant un TEdit et 2 TBitBtn (OK et Annuler)
C'est mon jour de bonté. Voici Un bout de code simplissime qui te donnera peut être des idées.

// appel de la fiche de saisie du MP dans la fiche appelante. Dans ce cas MainForm

Procedure TMainForm.mnu_ModifAvecMPClick(Sender: TObject);
Var fMotPasse: TfMotPasse;
begin
  // Controle de la présence du fichier MotPasse.INI sur le disque dur
  If Not IsFichierPasseExiste(FPasse) then
     Exit;   {* Le fichier mot de passe n'est pas présent sur le HD. On quitte
                A toi de voir ce qu'il faut faire dans ce cas  *}
  fMotPasse := TfMotPasse.Create(Self);
  Try
    fMotPasse.ShowModal;       // Saisie du mot de passe dans la fiche  fMotPasse
    If fMotPasse.ModalResult = mrCancel then
      Exit;
  Finally
    fMotPasse.Free;
  End;

// *****************************************

// L'unité MotPasse de la fiche fMotPasse
unit MotPasse;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;
type
  TfMotPasse = class(TForm)
    EdMotPasse: TEdit;
    StaticText1: TStaticText;
    BitBtnOk: TBitBtn;
    BitBtnAnnuler: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtnOkClick(Sender: TObject);
    procedure BitBtnAnnulerClick(Sender: TObject);
  private
    { Déclarations privées }
    cMot: string;
    nTry: Integer;
  public
    { Déclarations publiques }
  end;

implementation

uses Main;

{$R *.DFM}

procedure TfMotPasse.FormCreate(Sender: TObject);
Var FTxt: System.Text;
begin
{* Lire le mot de passe enregistré dans le fichier FPasse pour comparaison avec le mot saisi dans le TEdit *} 
System.Assign(FTxt, FPasse);
  Try
    System.Reset(FTxt);
    ReadLn(FTxt, cMot);
    nTry := 0;
  Finally
    System.Close(FTxt);
  End;
  ActiveControl := EdMotPasse;
end;

procedure TfMotPasse.FormDestroy(Sender: TObject);
begin
   cMot := '';
end;

procedure TfMotPasse.BitBtnOkClick(Sender: TObject);
begin
  If EdMotPasse.Text = cMot then
    ModalResult := mrOk
  Else begin
    Inc(nTry);
    EdMotPasse.Text := '';
    If nTry < 3 then begin
       MessageDlg('Mot de passe incorrect ! Corrigez SVP', mtWarning, [mbOk],0);
       EdMotPasse.Setfocus;
       End
    Else begin
       // 3 tentatives de saisie du mot de passe infructueuses. On quitte
       MessageDlg('Désolé!.'+ CRLF +
         'Cette fonction ne vous est pas autorisée !', mtError, [mbOk],0);
       ModalResult := mrCancel;
    end
  End;
end;

procedure TfMotPasse.BitBtnAnnulerClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;
end.

pierrot
0

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

Posez votre question
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
3 nov. 2012 à 15:42
@Pierrot

J'ai testé tes codes et j'ai mis le fichier MotPasse.INI sur la racine c:\. Il se pose un petit problème de bug à ce niveau (trait en rouge):
[code=pas]begin
{* Lire le mot de passe enregistré dans le fichier FPasse pour comparaison avec le mot saisi dans le TEdit *}
System.Assign(FTxt, FPasse|);




Developper est une dimension pour moi.
Leader2000
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
3 nov. 2012 à 21:27
Bonjour,
Dans l'unité MainForm je déclare des constantes pour m'éviter de retaper sans cesse les chemins des fichiers et c'est aussi plus parlant .
FPasse est une constante qui définie le chemin d'accès et le nom du fichier.
Exemples:
Const CRLF = #13+#10;
      DataPourScq = 'D:\Sav\Data\'; // Chemin des données
      FPasse = 'D:\SAV\Passe.ini';  // Fichier mot de passe
      FSav = 'D:\Sav\Sav.ini';      // Fichier d'initialisation
      ImpParDefaut= -1;             // Imprimante par défaut;  

A toi de définir le chemin d'accès et le nom de ton fichier contenant le mot de passe
dans la constante FPasse
C'est pas super de mettre des fichiers dans la racine. Pour chaque application je crée un sous répertoire pour l'exécutable et certains fichiers et un sous répertoire pour les bases de données.
Ex C:\Delphi\MonApplication\ pour l'exécutable
et pour les bases de données C:\Delphi\MonApplication\Data\
Bon développement!
pierrot
0
Rejoignez-nous