Récuperer toutes les données d'1 fichier Ini comportant plsrs sections [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 23 juin 2004
Statut
Membre
Dernière intervention
3 octobre 2005
-
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
-
Bonjour,
Je recherche une méthode simple pour récupérer toutes les données d'un fichier ini (comportant plusieurs sections) et les mettre dans une TStrings ou autre. Suis je obligé de parcourir les sections une par une puis d'enregistrer les valeurs de celle-ci ???
Je vous remercie pour votre aide

5 réponses

Messages postés
5
Date d'inscription
mercredi 23 juin 2004
Statut
Membre
Dernière intervention
3 octobre 2005

Salut Nico,
Ben en écrivant mon message, j'ai trouvé !!!! méthode LoadfromFile des Tstringlist. peu importe l'extansion du fichier à lire, du moins .txt, .rtf, .ini. toutes les lignes du fichier ini sont récupérées dans ma TString.

Bonne continuation
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Soient Str1 et Str2 deux variables TStrings, section une variable string :
Tu peux utiliser ReadSections(Str1) pour mettre toutes les sections et les mettre dans Str1 et ReadSectionValues(section; Str2) pour mettre toutes les valeurs de la section "section" dans Str2

@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
Je complète un peu...
La procédure qui suit récupère toutes les sections et les stocke dans Memo1 (tu peux aussi utiliser une variable TStrings si tu veux, ça revient au même, mais le memo permet de visualiser ce que tu fais). Ensuite, Les valeurs sont extraites et stockées dans le memo2 sous la forme :
[section1]
val1= 2
val2=43
[section2]
val1=94
val2=72

(le nom des sections entre [ ] sont ajoutés pour pouvoir plus facilement s'y retrouver)

procedure TForm1.Button1Click(Sender: TObject);
var
Str : TStrings;
F : TIniFile;
a : integer;
begin
Str : = TStringList.Create;
F:= TIniFile.Create('C:\config.ini');
F.ReadSections(Memo1.Lines); // Récupère toutes les sections du fichier ini dans le memo1
For a : = 0 to Memo1.Lines.Count-1 do
begin
F.ReadSectionValues(Memo1.Lines.Strings[a],Str); // Récupère toutes les valeurs de la section en cours
Memo2.Lines.Add('['+Memo1.Lines.Strings[a]+']'); // Ajout du nom de la section pour plus de lisibilité
Memo2.Lines.AddStrings(Str); // On ajoute au contenu de memo2
end;
Str.Free;
F.Free;
end;


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Messages postés
5
Date d'inscription
mercredi 23 juin 2004
Statut
Membre
Dernière intervention
3 octobre 2005

Salut Nico,
je te remercie beaucoup de ton aide; j'avais parcouru les méthodes de TiniFile et vu celà, mais j'avais la flème de partir coder tous celà !!!! j'ai préféré me creuser les méninges, mais grâce à ton message, j'arrête et me lance !!!! très sympa d'avoir filé ce bout d code.
Bonne soirée
Fred
Pour ton info, l'ingé système de ma boite m'a demandé de créer un service windows qui n'autorise pas le lancement d'émule à certaines heures et killer celle ci si l'utilisateur modifie les fichiers de confs. Donc 2 fichier ini : 1 référence et l'autre coté utilisateur; je compare donc le contenu de ces fichiers de conf (comparaison des heures syst des fichiers ne suffisant pas). d'où ma question !!!! je te devais au moins ça pour te remercier de ton aide
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
C'est vrai ça marche aussi comme ça


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !