Lire / écrire vos paramétres d'application dans la base de registre ou fichier ini

Contenu du snippet

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 / Exemple :


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

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.