Soyez le premier à donner votre avis sur cette source.
Snippet vu 14 680 fois - Téléchargée 33 fois
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;
26 nov. 2004 à 23:57
;-)
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
26 nov. 2004 à 18:41
en fait... le TRegInifile fait ce ke tu fais :D
26 nov. 2004 à 17:54
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
17 juil. 2004 à 15:21
euh n'existe t-il pas deja la TRegIniFile ? ;-/
bye
8 juil. 2004 à 07:50
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....
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.