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

Résolu
Gastounelli Messages postés 5 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 3 octobre 2005 - 16 févr. 2005 à 21:43
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 17 févr. 2005 à 10:03
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

Gastounelli Messages postés 5 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 3 octobre 2005
16 févr. 2005 à 23:04
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
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 févr. 2005 à 22:00
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 !
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 févr. 2005 à 22:23
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 !
0
Gastounelli Messages postés 5 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 3 octobre 2005
16 févr. 2005 à 22:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
17 févr. 2005 à 10:03
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 !
0
Rejoignez-nous