maitriser les paramètres d'un fichier *.INI

Le
od_37
Bonjour,

Comment mettre une annotation près d'un paramètre dans un fichier avec
extension INI sans que le fonctionnement de celui-ci soit entravé-

Merci pour vos informations
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paulchen
Le #18875111
Ça dépend du programme auquel est lié le *.ini.
Il n'y a pas de règle universelle.

C'est souvent (mais pas toujours) en mettant un point-virgule
pour faire ignorer la suite de la ligne
(commentaire ou suppression temporaire).
En particulier "; " ou "rem " en début de ligne pour ignorer la ligne
entière.
(l'espace est mis là pour raison de clarté je suppose)
Parfois c'est "# ".
--
Paulchen

"od_37" %
Bonjour,

Comment mettre une annotation près d'un paramètre dans un fichier avec
extension INI sans que le fonctionnement de celui-ci soit entravé-

Merci pour vos informations


JF
Le #18878221
*Bonjour Daniel* !

Bonjour,
Comment mettre une annotation près d'un paramètre dans un fichier avec
extension INI sans que le fonctionnement de celui-ci soit entravé-
Merci pour vos informations



J'ai testé avec le Desktop.ini qui est caché dans Favoris
Démarrer>Exécuter>favoris
Démarrer>Exécuter>%userprofile%favorisdesktop.ini
Ce Desktop.ini modifie l'icone du dossier (étoile),
on peut donc ainsi voir s'il fonctionne.

J'ai essayé les deux méthodes :
1/ Mettre les lignes de commandes en remarque
en les faisant précéder d'un point-virgule

[.ShellClassInfo]
;IconFile=%SystemRoot%system32SHELL32.dll
;IconIndex=-173
;LocalizedResourceName=@shell32.dll,-12693



2/ Créer une section [PROUT] et y déplacer les lignes de commandes

[.ShellClassInfo]
[RUNTUDJU]
IconFile=%SystemRoot%system32SHELL32.dll
IconIndex=-173
LocalizedResourceName=@shell32.dll,-12693


Dans les deux cas le Desktop.ini n'étant plus conforme,
l'icone n'est plus l'étoile, mais redevient celle d'un dossier
(relancer le Poste de Travail si nécessaire).


Discussion concernant la méthode 1 :
En fait on n'est pas sûr du tout que le point-virgule est interprété
comme une mise en remarque. Je l'ai remplacé par autre chose et l'icone
étoile a disparu. Donc on ne fait que modifier le nom de la variable,
laquelle n'existant pas, ne peut être utilisée par explorer.exe

Confirmation en utilisant autre chose que le point-virgule :

[.ShellClassInfo]
BLING IconFile=%SystemRoot%system32SHELL32.dll
BLING IconIndex=-173
BLANG LocalizedResourceName=@shell32.dll,-12693

Pas d'icone étoilée...


Test d'ajout d'annotations :

[.ShellClassInfo]
;annotation1
IconFile=%SystemRoot%system32SHELL32.dll
;annotation2
IconIndex=-173
;annotation3
LocalizedResourceName=@shell32.dll,-12693

Pas de problème, l'icone est toujours l'étoile.
Et si on retire les point-virgules en laissant les annotations ?

[.ShellClassInfo]
annotation1
IconFile=%SystemRoot%system32SHELL32.dll
annotation2
IconIndex=-173
annotation3
LocalizedResourceName=@shell32.dll,-12693


Pas eu de problème.


L'ajout d'une remarque (;blabla) en extrémité de ligne est négatif,
l'icone étoilée disparait.

Il semble donc qu'Explorer.exe lise le contenu du fichier en y
cherchant d'abord une section conforme, puis, dans cette section, en
cherchant du texte qui commence par ce qu'il attend, à savoir un nom de
variable connu. Tout le reste est ignoré. L'utilisation de
point-virgules est inutile, sauf à clarifier les choses au lecteur
humain.

Vos propres tests devraient confirmer ces essais.

Ces observations ne peuvent être généralisées à tous les fichiers.INI
qui dépendent des programmes qui les exploitent, on l'a vu avec
boot.ini

--
Salutations, Jean-François
http://fspsa.free.fr/Index-de-la-FAQ-WINXP-de-Panthere-Noire.htm
http://fspsa.free.fr/Capture-Ecran-et-Publication-vers-Newsgroups.htm
http://fspsa.free.fr/Google-N-Est-Plus-Mon-Ami.htm
Pierre TORRIS
Le #18882691
JF
Bonjour Jean-François,

Discussion concernant la méthode 1 :
En fait on n'est pas sûr du tout que le point-virgule est interprété comme
une mise en remarque.



Je te joins un petit exécutable et son fichier INI. Le but de la
manoeuvre est de lire une section complète [OPTION] d'un fichier INI.

http://cjoint.com/?doj2bfK3O0

Après avoir lu une première fois le fichier INI, modifie-le et mets un
point-virgule devant une option de ton choix. Relis le INI et tu verras
que l'option en question n'est plus listée. Essaie avec une virgule...

Et donc, le point-virgule est bien un élément pris en compte. Le
programme n'utilise qu'une seule fonction qui fait appel à la fonction
"GetPrivateProfileString" de "kernel32".

NB : le point-virgule doit être au début de la ligne (hors espaces).
Il sert généralement à mettre une option en stand-by.

Il semble donc qu'Explorer.exe lise le contenu du fichier en y cherchant
d'abord une section conforme, puis, dans cette section, en cherchant du texte
qui commence par ce qu'il attend, à savoir un nom de variable connu.



La structure initiale d'un fichier INI est la suivante :
[section]
key=string

Lors de la lecture, un programme peut indiquer la "section" et la "key"
qu'il veut lire (qui doit être de la forme "key=") et c'est
généralement ce qu'il fait puisqu'il les connaît (key définies par
avance).

C'est pourquoi le reste du fichier n'a que peu d'importance.

Tout le reste est ignoré. L'utilisation de point-virgules est inutile, sauf à
clarifier les choses au lecteur humain.



Pour l'humain que nous sommes, c'est déjà la moindre des choses. ;-)

Mais un programme peut également lire (par exemple) toutes les "key"
d'une "section", sans les connaître par avance (mon EXE joint). Le
format "key=" est important (même avec des espaces) mais il faut quand
même faire attention au texte ajouté.

Par exemple, ajoute dans la section [option] du fichier INI :
[option]
ceci est un commentaire = ne pas modifier !

En relisant le INI, la ligne sera ajoutée (espaces supprimés).
Mets maintenant un point virgule au début de la ligne.

De plus, il est inutile de faire souffrir le moteur d'analyse en lui
faisant faire des tas de vérifications inutiles. S'il détecte un
point-virgule, il va ignorer le reste de la ligne de suite.

Vos propres tests devraient confirmer ces essais.



Je te laisse refaire quelques essais. ;-)

Ces observations ne peuvent être généralisées à tous les fichiers.INI qui
dépendent des programmes qui les exploitent, on l'a vu avec boot.ini



Tout à fait... D'ailleurs un fichier INI appartient normalement au
logiciel qui va le traiter et on a pas à y mettre le nez. En outre,
s'il convient au logiciel de le récrire entièrement à chaque fois, tout
ce qui aura été ajouté sera détruit. De plus, si le logiciel utilise
ses propres fonctions, et non celles des API Windows, tout ce qui vient
d'être dit peut être hors sujet. J'ai également déjà vu des fichiers
INI qui ne sont INI que de nom (avec un format propriétaire), et même
des fichiers INI de type binaire !

--
Bien à vous. Pierre TORRIS
www.ptorris.com
JF
Le #18883001
*Bonjour Pierre TORRIS* !

JF
Bonjour Jean-François,

Discussion concernant la méthode 1 :
En fait on n'est pas sûr du tout que le point-virgule est interprété comme
une mise en remarque.



Je te joins un petit exécutable et son fichier INI. Le but de la manoeuvre
est de lire une section complète [OPTION] d'un fichier INI.

http://cjoint.com/?doj2bfK3O0

Après avoir lu une première fois le fichier INI, modifie-le et mets un
point-virgule devant une option de ton choix. Relis le INI et tu verras que
l'option en question n'est plus listée. Essaie avec une virgule...

Et donc, le point-virgule est bien un élément pris en compte. Le programme
n'utilise qu'une seule fonction qui fait appel à la fonction
"GetPrivateProfileString" de "kernel32".

NB : le point-virgule doit être au début de la ligne (hors espaces).
Il sert généralement à mettre une option en stand-by.

Il semble donc qu'Explorer.exe lise le contenu du fichier en y cherchant
d'abord une section conforme, puis, dans cette section, en cherchant du
texte qui commence par ce qu'il attend, à savoir un nom de variable connu.



La structure initiale d'un fichier INI est la suivante :
[section]
key=string

Lors de la lecture, un programme peut indiquer la "section" et la "key" qu'il
veut lire (qui doit être de la forme "key=") et c'est généralement ce qu'il
fait puisqu'il les connaît (key définies par avance).

C'est pourquoi le reste du fichier n'a que peu d'importance.

Tout le reste est ignoré. L'utilisation de point-virgules est inutile, sauf
à clarifier les choses au lecteur humain.



Pour l'humain que nous sommes, c'est déjà la moindre des choses. ;-)

Mais un programme peut également lire (par exemple) toutes les "key" d'une
"section", sans les connaître par avance (mon EXE joint). Le format "key="
est important (même avec des espaces) mais il faut quand même faire attention
au texte ajouté.

Par exemple, ajoute dans la section [option] du fichier INI :
[option]
ceci est un commentaire = ne pas modifier !

En relisant le INI, la ligne sera ajoutée (espaces supprimés).
Mets maintenant un point virgule au début de la ligne.

De plus, il est inutile de faire souffrir le moteur d'analyse en lui faisant
faire des tas de vérifications inutiles. S'il détecte un point-virgule, il va
ignorer le reste de la ligne de suite.

Vos propres tests devraient confirmer ces essais.



Je te laisse refaire quelques essais. ;-)

Ces observations ne peuvent être généralisées à tous les fichiers.INI qui
dépendent des programmes qui les exploitent, on l'a vu avec boot.ini



Tout à fait... D'ailleurs un fichier INI appartient normalement au logiciel
qui va le traiter et on a pas à y mettre le nez. En outre, s'il convient au
logiciel de le récrire entièrement à chaque fois, tout ce qui aura été ajouté
sera détruit. De plus, si le logiciel utilise ses propres fonctions, et non
celles des API Windows, tout ce qui vient d'être dit peut être hors sujet.
J'ai également déjà vu des fichiers INI qui ne sont INI que de nom (avec un
format propriétaire), et même des fichiers INI de type binaire !



OK pour tout, on est en phase. TestINI.exe est plus évolué
qu'Explorer.exe et interprète classiquement le point-virgule comme une
mise en remarque. Vu la simplicité de TestINI.exe je n'ai pas pu
vérifier qu'un point-virgule en fin de ligne permettait d'ajouter une
remarque, mais ce serait certainement le cas.

Merci de ce complément.

--
Salutations, Jean-François
http://fspsa.free.fr/Index-de-la-FAQ-WINXP-de-Panthere-Noire.htm
http://fspsa.free.fr/Capture-Ecran-et-Publication-vers-Newsgroups.htm
http://fspsa.free.fr/contamination-lecteurs-amovibles.htm
Pierre TORRIS
Le #18883171
JF
Bonjour JF,

OK pour tout, on est en phase. TestINI.exe est plus évolué qu'Explorer.exe et
interprète classiquement le point-virgule comme une mise en remarque.



Il faut juste faire la différence entre un programme (comme Explorer)
qui lit une "key" définie (et qui se fiche du reste, enfin en
principe), et un programme (comme TestINI) qui lit toutes les "key"
d'une "section" sans les connaître (sachant que les "key" peuvent être
quand même connues et attendues par avance, d'où possibilité d'ignorer
le "texte" iconnu par la suite).

Vu la
simplicité de TestINI.exe je n'ai pas pu vérifier qu'un point-virgule en fin
de ligne permettait d'ajouter une remarque, mais ce serait certainement le
cas.



Tu peux très bien ajouter un point-virgule en fin de ligne dans le
fichier INI, le texte suivant ne sera pas pris pour une remarque. J'ai
déjà mentionné que le point-virgule doit se trouver en début de ligne.

Et je souligne que tout ceci est effectué, non pas par TestINI (qui ne
contient qu'un appel de fonction), mais par la fonction de l'API
Windows. Ensuite, il est clair qu'un programme peut réaliser une
foultitude de tests supplémentaires sur le résultat obtenu.

Merci de ce complément.



Histoire d'y voir plus clair. ;-)

--
Bien à vous. Pierre TORRIS
www.ptorris.com
Publicité
Poster une réponse
Anonyme