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
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.