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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| unit Registre;
interface
uses
Windows, Messages, Registry, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Lire: TButton;
Ecrire: TButton;
Quitter: TButton;
Label1: TLabel;
existe: TButton;
procedure QuitterClick(Sender: TObject);
procedure LireClick(Sender: TObject);
procedure EcrireClick(Sender: TObject);
procedure existeClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
const
// clé du registre enregistrement et informations
root = HKEY_CURRENT_USER;
open = '\Zounar';
implementation
{$R *.dfm}
procedure TForm1.existeClick(Sender: TObject);
Var Registre : TRegistry;
// nouveau = si c'est une première utilisation,valeur ID clé=nouveau
nouveau : string;
{ cette routine s'evertue à enregistrer 'nouveau' dans ID clé alors
que j'ai mis la valeur b+a de la routine Ecrire.
je tourne en rond }
{ ce que je cherche en définitive, dès que je lance le programme, il execute la routine
existe sans passer par un bouton }
begin
nouveau :='nouveau';
Registre:=TRegistry.Create; //Crée un objet TRegistry
try
Registre.RootKey:=root; //Définit la clé principale
Registre.OpenKey(open,true); // force la création si besoin
if Registre.KeyExists('ID clé')
// pour contrôler la valeur ID clé et me l'afficher
then label1.caption:=Registre.ReadString('ID clé')
else Registre.WriteString('ID clé',nouveau);
label1.caption:=Registre.ReadString('ID clé');
Registre.CloseKey; //Ferme la clé
finally
Registre.Free; //Détruit l'objet
end;
end;
{ Ce que je cherche,c'est que si c'est la pemière utilisation on enregistre
nouveau dans ID clé et qu'aprèe, on m'envoye sur la routine Ecrire, autrement
on lance le programme normalement en utilisant la valeur ID clé. }
{ Normalemenet, ID clé doit avoir une valeur du genre : 123456789 }
procedure TForm1.LireClick(Sender: TObject);
Var Registre : TRegistry;
a : string;
begin
Registre:=TRegistry.Create; //Crée un objet TRegistry
Registre.RootKey:=root; //Définit la clé principale
Registre.OpenKey(open,False); {"OpenKey" ouvre une clé particulière (False signifie que la clé n'est pas crée si elle n'existe pas}
label1.caption:=Registre.ReadString('ID clé'); //Renvoie un string à partir du nom de la valeur
Registre.CloseKey; //Ferme la clé
Registre.Free; //Détruit l'objet
end;
procedure TForm1.EcrireClick(Sender: TObject);
Var Registre : TRegistry;
a, b : string;
begin
// a et b sont lé juste pour faire le test
b := 'abc-1234';
a:= b+'-48';
Registre:=TRegistry.Create; //Crée un objet TRegistry
Registre.RootKey:=root; //Définit la clé principale
Registre.OpenKey(open,True); {"OpenKey" ouvre une clé particulière (False signifie que la clé n'est pas crée si elle n'existe pas}
Registre.WriteString('ID clé',a);
Registre.CloseKey; //Ferme la clé
Registre.Free; //Détruit l'objet
end;
procedure TForm1.QuitterClick(Sender: TObject);
begin
Close;
end;
end. |
Partager