Crypter Data Paradox Table

Signaler
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007
-
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007
-
Bonjour à vous,

Je suis entrain de créer ma première application avec une BD Paradox.

J'ai trouvé un algorithme pour encrypter les data que j'envoie dedans. J'explique comment je procède :

Premièrement, voici  ce que j'utilise

J'utilise une Base de Données Paradox nommé Users.DB
Un DBGrid pour l'affiche de certaines informations de ma BD.
Des Champs DBEdit pour modifier ou entrer des informations dans la BD.

Donc voici comment j'encrypte : Je rempli les champs et ensuite j'appuie sur Sauvegarder.

Voici le code j'ai seulement garder l'essentiel pour vous faciliter la tache !:

procedure TForm1.Image3Click(Sender: TObject);
begin

DBEdit1.Text := Encode(DBEdit1.Text, SecurityString);
DBEdit2.Text := Encode(DBEdit2.Text, SecurityString);

Users.Post;

DBEdit1.Text := Decode(DBEdit1.Text, SecurityString);

DBEdit2.Text := Decode(DBEdit2.Text, SecurityString);
end;

N.B.: Encode, Decode (Ce sont des fonctions que j'ai créé pour le cryptage)
function Decode(Data, SecurityString: string)

Cependant, il y a un petit problème. Comme les données entrent maintenant Crypté dans la BD, dans la DBGrid, les données sont aussi cryptés donc dans mon DBGrid je ne vois que des ZnHksdlK/nsJkL (exemple :P) Donc ma question, comment je fais pour Decrypter mes données de ma BD avant que la DBGrid chargent les informations de la BD ?

Il est important que la BD soit toujours Crypté, meme pendant l'execution du programme.

Merci de m'aider !!

62 réponses

Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
Ca y est merci, j'y suis arrivé.
 je ne connaissais pas OnGetText

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

moi non plus je ne trouve pas le OnGetText dans delphi enterprise 7 !
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := 'Mon texte';
end;

 

procedure TForm1.Query1AfterOpen(DataSet: TDataSet);
begin
   Query1.Fields[1].OnGetText:=SetTheText;
end;

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

as-tu MSN Dom ? jacasseur hotmail com
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
Non,
Query1AfterOpen c'est un evenement de la query

Setthetext, c'est une procedure normale

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

ok ... mais la je comprenais le OnGetText mais là t'a ajouté un Query (Est-ce un composant que je dois ajouter a ma form ?)

pourquoi le SetTheText ?

moi toutes les donné sont deja crypté dans ma base de données ... il reste a les decrypter AVANT de les afficher dans mon tdgrid 
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
Ton dbgrid n'est pas lié à une query ? ou un TTable ?
c'est là que tu trouveras l'événement qui te permettra de modifier en runtime l'événement ongettext du champ afin de modifier son comportement avec la procedure onsettext en faisant :
Text:=Decode(text) ; ...

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

j'utilise un TTable avec un TDataSource.
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

de plus dans la liste d'événements, je n'ai ni OnGetText ni OnSetText sur aucun de mes component (DBGrid, TTable, TDataSource)
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
OnGetText est un event de TField ..

Dans ta table créé l'evénement AfterOpen et fais comme j'ai mis plus haut alors tu ciomprendras ...

Je te le transpose au cas ou .. :
procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := 'Mon texte';
end;

procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
begin
   Table.Fields[1].OnGetText:=SetTheText;
end;

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

comme ca ?

procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
begin
 procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := 'Mon texte';
end;

procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
begin
   Table.Fields[1].OnGetText:=SetTheText;
end;
end;
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
begin
Users.Fields[1].OnGetText:=SetTheText;
end;

procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := 'Mon texte';
end;

En italique ce que tu tapes.
Pas en italique c'est l'edi qui l'"écrit"

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

oui .. désolé c'est ce que j'ai fait . .cependant j'ai un problème avec le OnSetText ..

[Error] Unit1.pas(565): Undeclared identifier: 'SetTheText'
[Error] Unit1.pas(565): ';' expected but ')' found
[Error] Unit1.pas(572): Undeclared identifier: 'SetTheText'

565procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := 'Mon texte';
end;

procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
begin
  572 Users.Fields[1].OnGetText: =SetTheText;
end;

end.
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

oui .. désolé c'est ce que j'ai fait . .cependant j'ai un problème avec le OnSetText ..

[Error] Unit1.pas(565): Undeclared identifier: 'SetTheText'
[Error] Unit1.pas(565): ';' expected but ')' found
[Error] Unit1.pas(572): Undeclared identifier: 'SetTheText'

565procedure TForm1.SetTheText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  Text := 'Mon texte';
end;

procedure TForm1.UsersAfterOpen(DataSet: TDataSet);
begin
  572 Users.Fields[1].OnGetText: =SetTheText;
end;

end.
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
Il faut déclarer la procédure dans public (en haut de ton unité) comme toutes les procédures que tu créées ...
Dis mois, cela fait combien de temps que tu fais du Delphi ... ?

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

a vrai dire .. depuis quelques semaines je dois faire quelques logiciels. J'essaye d'apprendre :(

Désolé d'etre débutant !
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

bon .. là j'ai déclaré comme il se doit et ca fonctionne .. je n'ai plus d'erreur. j'avais essayé de le declarer tantot et ca ne fonctionnait pas car j'avais laissé le TForm1 dans la déclaration.

Maintenant peux-tu m'expliquer l'utilité du SetTheText ?
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
Ben c'est pas tellement le fait que tu sois débutant qui me gêne,
Le mieux cela serait de faire qques programmes style calculatrice, conversion franc euro ,...

Et aprés tu t'attaques aux bases de données ...

Dom
Messages postés
46
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
16 août 2007

facile de faire des programme style calculette !

j'en ai fait qqs-un .. des petites choses normales ... mais la j'ai besoin d'une BD cause de securité. J'aurais pu le faire et envoyer ca dans un fichier Texte masi bon ... les Base de données ca va toujours m'etre utile !

Je veux apprendre et ma facon dM'apprendre c'est en voyant du code ! et surtout en l'appliquant dans MES programmes !
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
7
OK mais, c'est quand même pratique de savoir faire des procédures ou des fonctions ...
Et de les déclarer correctement ...
Bon courage
Dom