begin process at 2010 02 10 11:08:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de registre

 > LIRE / ÉCRIRE VOS PARAMÉTRES D'APPLICATION DANS LA BASE DE REGISTRE OU FICHIER INI

LIRE / ÉCRIRE VOS PARAMÉTRES D'APPLICATION DANS LA BASE DE REGISTRE OU FICHIER INI


 Description

FONCTION TRES UTILE :

Lecture / Ecriture dans la base de registre ou un fichier INI.
Mode Ecriture : On écrit la clé (créée automatiquement si besoin)
                On écrit la valeur (dans un fichier créé automatiquemet si besoin)
Mode Lecture : Lit la valeur de la clé si elle existe.
               Si elle n'existe pas la crée automatiquement avec la valeur par défaut précisée

Source

  • Function GetRegistryValueStr(KeyName, ValueName, Value : string; Write, FileAcces : boolean): string;
  • var
  • Reg : TRegistry; // nécessite d'ajouter dans les uses Registry
  • Ini: TIniFile; // nécessite d'ajouter dans les uses IniFiles
  • Val : string; // Valeur temporaire : Lue ou écrite, retournée par la fonction
  • begin
  • // Lit des infos dans la base de registre ou un fichier ini (si elle n'existe pas les crées)...
  • // Version : 1.00
  • // Auteur : Fabien FERT
  • // PARAMETRES :
  • // KeyName : Nom de la clé de registre ou nom de la clé (groupe) du fichier ini
  • // ValueName : Nom de la valeur recherchée
  • // Value : Valeur par défaut, si la clé (ValueName) n'existe pas
  • // Write : True = Ecriture - False = Lecture (sauf si elle n'existe pas devient alors écriture)
  • // FileAcces : True = Accés par Fichier INI - False = Accés dans la base de registre
  • //
  • Val := Value;
  • If FileAcces then
  • begin
  • // Lit les données dans le base de registre (ou crée une valeur par défaut si elle n'existe pas)
  • Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
  • try
  • // lit / écris les données
  • if Ini.ValueExists(KeyName, ValueName) then
  • begin
  • if write then
  • begin
  • // Ecris une valeur par défaut
  • Ini.WriteString(KeyName, ValueName, Val);
  • end
  • else
  • begin
  • // Lit la valeur
  • Val := Ini.ReadString(KeyName, ValueName, Val);
  • end;
  • end
  • else
  • begin
  • // Ecris une valeur par défaut
  • Ini.WriteString(KeyName, ValueName, Val);
  • end;
  • finally
  • Ini.Free;
  • inherited;
  • end;
  • end
  • else
  • begin
  • // Lit les données dans le base de registre (ou crée une valeur par défaut si elle n'existe pas)
  • Reg := TRegistry.Create;
  • Val := Value;
  • try
  • Reg.RootKey := HKEY_LOCAL_MACHINE; // CURRENT_USER; à vous de choisir !!!
  • // 'SoftwareMicrosoftWindowsCurrentVersionRunOnce'
  • if Reg.OpenKey(KeyName, True) then
  • begin
  • if (Reg.ValueExists(ValueName)) and not(write) then
  • begin
  • // Lit la valeur
  • Val := Reg.ReadString(ValueName);
  • end
  • else
  • begin
  • // Ecris une valeur par défaut
  • Reg.WriteString(ValueName, Val);
  • Reg.CloseKey;
  • end;
  • end;
  • finally
  • Reg.Free;
  • inherited;
  • end;
  • end;
  • // Retourne la valeur Lue (ou écrite)
  • GetRegistryValueStr := Val;
  • end;
Function GetRegistryValueStr(KeyName, ValueName, Value : string; Write, FileAcces : boolean): string;
var
  Reg : TRegistry;    // nécessite d'ajouter dans les uses Registry
  Ini: TIniFile;      // nécessite d'ajouter dans les uses IniFiles
  Val : string;       // Valeur temporaire : Lue ou écrite, retournée par la fonction
begin
  // Lit des infos dans la base de registre ou un fichier ini (si elle n'existe pas les crées)...
  // Version : 1.00
  // Auteur : Fabien FERT
  // PARAMETRES :
  //    KeyName   : Nom de la clé de registre ou nom de la clé (groupe) du fichier ini
  //    ValueName : Nom de la valeur recherchée
  //    Value     : Valeur par défaut, si la clé (ValueName) n'existe pas
  //    Write     : True = Ecriture   -   False = Lecture (sauf si elle n'existe pas devient alors écriture)
  //    FileAcces : True = Accés par Fichier INI   -   False = Accés dans la base de registre
  //
  Val := Value;
  If FileAcces then
  begin
    // Lit les données dans le base de registre (ou crée une valeur par défaut si elle n'existe pas)
    Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, '.INI' ) );
    try
      // lit / écris les données
      if Ini.ValueExists(KeyName, ValueName) then
      begin
        if write then
        begin
          // Ecris une valeur par défaut
          Ini.WriteString(KeyName, ValueName, Val);
        end
        else
        begin
          // Lit la valeur
          Val := Ini.ReadString(KeyName, ValueName, Val);
        end;
      end
      else
      begin
          // Ecris une valeur par défaut
          Ini.WriteString(KeyName, ValueName, Val);
      end;
    finally
      Ini.Free;
      inherited;
    end;
  end
  else
  begin
    // Lit les données dans le base de registre (ou crée une valeur par défaut si elle n'existe pas)
    Reg := TRegistry.Create;
    Val := Value;
    try
      Reg.RootKey := HKEY_LOCAL_MACHINE;  // CURRENT_USER; à vous de choisir !!!
      // 'SoftwareMicrosoftWindowsCurrentVersionRunOnce'
      if Reg.OpenKey(KeyName, True) then
      begin
        if (Reg.ValueExists(ValueName)) and not(write) then
        begin
          // Lit la valeur
          Val := Reg.ReadString(ValueName);
        end
        else
        begin
          // Ecris une valeur par défaut
          Reg.WriteString(ValueName, Val);
          Reg.CloseKey;
        end;
      end;
    finally
      Reg.Free;
      inherited;
    end;
  end;
  // Retourne la valeur Lue (ou écrite)
  GetRegistryValueStr := Val;
end;

 Conclusion

L'appel de cette fonction est des plus simple :
Valeur := GetRegistryValueStr('SoftwareDAOSSyscore', 'Hostname', 'LocalHost', False, True);  // pour lire un fichier INI
Valeur := GetRegistryValueStr('SoftwareDAOSSyscore', 'Hostname', 'LocalHost', False, False);  // pour lire dans la base de registre
Valeur := GetRegistryValueStr('SoftwareDAOSSyscore', 'Hostname', 'LocalHost', True, True);  // pour écrire un fichier INI
Valeur := GetRegistryValueStr('SoftwareDAOSSyscore', 'Hostname', 'LocalHost', True, False);  // pour écrire dans la base de registre


 Sources du même auteur

EVALUATEUR D'EXPRESSION MATHÉMATIQUE (PARENTHESE, PUISSANCE,...
Source avec Zip Source avec une capture DBEXPRESS EXEMPLES

 Sources de la même categorie

Source avec Zip USER ASSIST DECODER par f0xi
Source avec Zip SOURCE QUI PERMET DE RÉCUPÉRER @IP ET LE NOM DE LA CARTE RÉS... par yosthegost
Source avec Zip SAUVEGARDE DES PARAMETRES DE VOTRE APPLICATION par elguevel
Source avec Zip ACTIVATION D'UNE APPLICATION par KoolFree2005
Source avec Zip Source avec une capture CONFIGURATION DE WINDOWS® XP AVEC L'APPLICATION XP-CONF (UTI... par freetai

 Sources en rapport avec celle ci

Source avec Zip UNE AUTRE TECHNIQUE POUR GERER CERTAINES CLASS (EXEMPLE AVEC... par ManChesTer
Source avec Zip ACTIVATION D'UNE APPLICATION par KoolFree2005
Source avec Zip Source avec une capture LANCEMENT D'UNE APPLI À CHAQUE DÉMARRAGE EN UTILISANT LA BDR... par japee
Source avec Zip Source avec une capture LIRE ET ÉCRIRE DANS UN FICHIER INI par japee
Source avec Zip AUTO LOGIN SUR LES MACHINES DE TYPE NT par prod

Commentaires et avis

Commentaire de ffert le 08/07/2004 07:50:24

POUR CEUX QUI N'AURIENT PAS COMPRIS : cette fonction regroupe toutes les actions nécessaire pour la Lecture / Ecriture dans un fichier INI ou la base de registre. Pour l'utiliser dans vos application : copier / coller  ce code dans votre application.

Valeur := GetRegistryValueStr('/Software/DAOS/Syscore', 'Hostname', 'LocalHost', False, True); // pour lire/écrire un fichier INI
Valeur := GetRegistryValueStr('/Software/DAOS/Syscore', 'Hostname', 'LocalHost', False, False); // pour lire/écrire dans la base de registre


Désolé, mais le site à supprimé les AntiSlash dans le chemin des clé de base de registre en exemple....
NOTA : vous devez donc remplacer les / par des antislash...
au lieu de SoftwareDAOSSyscore il faut lire Software/DAOS/Syscore

MERCI
en espérant que cela vous rende service....

Commentaire de JulioDelphi le 17/07/2004 15:21:29 administrateur CS

salut,

euh n'existe t-il pas deja la TRegIniFile ? ;-/

bye

Commentaire de ffert le 26/11/2004 17:54:09

Effectivement, la TRefIniFile pourrait être utile... (jaurais d'ailleurs pu l'utiliser pour faire cette source, mais je suis de la vieille école désolé !!!)

En plus ma source permet en un seul appel de lire soit dans un fichier INI soit dans la base de registre, et dans le cas ou aucune valeur n'est présente de renseigner une valeur par défaut en créant la ligne (dans le Fichier INI) ou la clé de registre si besoins....

Donc en une seule ligne pas mal de possibilité !! non ???

bye

Commentaire de JulioDelphi le 26/11/2004 18:41:40 administrateur CS

le le TRegIniFile a aussi la possibilité de lire via BDR ou INI.

en fait... le TRegInifile fait ce ke tu fais :D

Commentaire de ffert le 26/11/2004 23:57:39

Je suis d'accord mais pas lire et écrire en une seule ligne...

;-)

Mais quand j'aurais le temps j'essayrais de le transformer avec un TRegInifile ... Bien que les articles que j'ai trouvés parlent de windows 98 et NT mais pas de 2000 et XP, je ne sais pas si TRegInifile  est compatible avec ces OS...

Un autre avantage de séparer l'accés à la base de registre de l'accés à un fichier INI est la compatibiltié avec Linux auquel cas quelques directives de compilations suffisent à faire focntionner mon code sous les 2 plateformes...

Mais je connais pas assez TRegInifile pour pouvoir comparer vraiment...

Bye

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Lecture d'une cle sur la base de registre [ par Kosh ] Salut tout le mondej'ai ecrit un petit programme pour lire une cle (chaine de caract) situe dans un rep de la bdrmais le probleme que j'ai ca fonction TFILESTREAM [ par Le NeWbIe ] Bonjour,j'ai créé un objet TFILESTREAM, c'est à dire un fichier ouvert dans lequel je veux écrire et lire des données, pour écrire ça marche mais je n application en resau [ par elnino234 ] voila g crée une application qui affiche des donnée météo (rose des vents, vitesse, graph pression, etc, )Cette application va lire les bases de donn mail n arrive pas lire application x-zip sachant que j ai installer turbo power archive [ par sahsalmoug ] toctoc lire une valeur dans le registre [ par Maniaxman ] Salut !! En sachant que j'ai deux CheckBox, et que je veux lire la valeur de NoClose qui est dans  (HKCU\Software\Microsoft\Windows\CurrentVersi lire chaine très longue dans un fichier ini et la stocker dans une var pour être traitée [ par Bestdoud ] en fait j'ai le fichier ini suivant: http://amigagaamp.free.fr/tests/region.ini je n'arrive pas à récupérer les chaînes entièrement j'utilise la fon comment lire un fichier dbf ? [ par jarv ] Bonjour !Je suis encore débutant en delphi et j'ai réalisé une petite application qui gére un fichier de donnée mais pas sous la forme d'une base de d comment lire un fichier dbf ? [ par jarv ] Bonjour !Je suis encore débutant en delphi et j'ai réalisé une petite application qui gére un fichier de donnée mais pas sous la forme d'une base de d Lire un tableau dans un ini ? [ par DeltaFX ] Existe t'il un moyen de lire et d'ecrire une clef du genre[MaSection]MaClef=1,8,4800,1,1Plutot que de stocker autant de lignes que de valeurs ? Soucis de syntaxe pour écrire dans le registre [ par John Dogget ] Salut à tous.Je souhaite écrire une clé dans le registre pour démarrer mon prog automatiquement.Voilà ce que j'ai écris


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales