Crypter Data Paradox Table

tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007 - 21 juin 2007 à 15:38
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007 - 16 août 2007 à 21:01
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

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

Dom
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 15:59
moi non plus je ne trouve pas le OnGetText dans delphi enterprise 7 !
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:00
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
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:03
as-tu MSN Dom ? jacasseur hotmail com
0

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

Posez votre question
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:04
Non,
Query1AfterOpen c'est un evenement de la query

Setthetext, c'est une procedure normale

Dom
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:07
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 
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:12
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
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:14
j'utilise un TTable avec un TDataSource.
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:17
de plus dans la liste d'événements, je n'ai ni OnGetText ni OnSetText sur aucun de mes component (DBGrid, TTable, TDataSource)
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:19
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
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:30
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;
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:33
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
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:46
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.
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:46
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.
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 16:57
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
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 16:59
a vrai dire .. depuis quelques semaines je dois faire quelques logiciels. J'essaye d'apprendre :(

Désolé d'etre débutant !
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 17:02
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 ?
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 17:10
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
0
tomz24 Messages postés 46 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 16 août 2007
26 juin 2007 à 17:12
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 !
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
26 juin 2007 à 17:17
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
0
Rejoignez-nous