[R] Compter le nombre de key d'une section. (fichier .ini)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

[R] Compter le nombre de key d'une section. (fichier .ini)

#1

Message par matcarto »

Bonjour, :)

Ma question est toute simple mais je n'arrive pourtant pas à trouver la réponse. :(

J'aimerais compter le nombre de clé se trouvant dans une section d'un fichier .ini.

Exemple dans un fichier .ini :

Code : Tout sélectionner

[section_test]
clé1=0
clé2=2
clé3=8
clé4=0
 
J'aimerais donc, dans cet exemple, obtenir la valeur 4. (car 4 clés dans la section [section_test]). :)

Est-ce que quelqu'un pourrait m'aider ? :D
Modifié en dernier par matcarto le sam. 27 août 2011 19:22, modifié 3 fois.
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#2

Message par fred39 »

Bonjour,
je pense qu'il faut que vous utilisiez la fonction IniReadSection
l'aide dit :
"The number of elements returned will be in $result[0][0]. "

donc un code dans ce style devrait vous convenir:

Code : Tout sélectionner

$var = IniReadSection("C:\Temp\myfile.ini", "section_test")
MsgBox(0,@ScriptName,$var[0][0])

 


bonne journée :)
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#3

Message par matcarto »

Merci beaucoup ! :) Ça tient en une ligne en fait. ^^

Sujet résolu. ;)
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#4

Message par matcarto »

En fait, ça ne marche pas. Enfin, pas dans mon script. :(

SciTE me dit : Subscript used with non-Array variable.

Voici mon code :

Code : Tout sélectionner

$List = GUICtrlCreateListView("Prénom", 50, 60, 300, 420) ;Création de la liste
GUICtrlSendMsg($List, $LVM_SETCOLUMNWIDTH, 0, 296)

$file = FileOpen("Liste.txt", 0)
Dim $LineTab[1] ; on crée un tableau pour stocker les lignes
$LineNb = 0
While 1 ; donc on fait une boucle
   $line = FileReadLine($file) ; ou on lit une ligne (une ligne =  un prénom)
   If @error = -1 Then ExitLoop ; si y a une erreur c'est qu'on est a la fin du fichier
   If $line <> "" Then ;Si la ligne existe alors
       $sectionprenom = IniReadSection("parametres.ini", $line) ;On lit le nombre de clés présentes dans la section correspondant au prénom

       If $sectionprenom[0][0] <> 5 Then ,Si il n'y a pas 5 clés dans la section du prénom alors
      $LineNb = $LineNb + 1 ; on incrémente le compteur
      ReDim $LineTab[$LineNb + 1] ; comme on ne sait pas combien il y a de lignes, on redimentionne le tableau ou on les stocke
      $LineTab[$LineNb] = GUICtrlCreateListViewItem($line, $List) ; et on injecte la ligne dans la liste
      EndIf
   EndIf
WEnd
Des idées ? :)
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#5

Message par PandiPanda »

ca serai pas plus simple de compter le nombre de ligne(_FileCountLines($sFilePath)), de créer un tableau grâce au chiffre retourné et de faire une boucle for, plutot qu'un while?

Ou le plus simple serai d'utiliser cette fonction ci ... _FileReadToArray()

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>

Dim $array
global $path=""
_FileReadToArray($path,$array)
_ArrayDisplay($array)
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#6

Message par mikell »

matcarto a écrit :Des idées ? :)
Plein :mrgreen:
Si l'erreur concerne l'array $sectionprenom ça peut venir d'une erreur de lecture : le titre du ini, ou alors le fait que dans les lignes du Liste.txt il y a des espaces
ça vaudrait le coup d'essayer ça

Code : Tout sélectionner

   If $line <> "" Then 
      $line = StringStripWS($line)
      $sectionprenom = IniReadSection("parametres.ini", $line)
Modifié en dernier par mikell le sam. 27 août 2011 17:34, modifié 3 fois.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#7

Message par matcarto »

mikell a écrit :
matcarto a écrit :SciTE me dit : Subscript used with non-Array variable.
ça concerne quelle array ?
Ça concerne cette ligne : ;)

Code : Tout sélectionner

If $sectionprenom[0][0] <> 5 Then
@PandiPanda : Désolé mais je débute tout juste en AutoIt, est-ce que tu pourrais développer un peu plus... :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#8

Message par mikell »

vous posteriez pas votre ini qu'on lui voie un peu le dedans ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#9

Message par matcarto »

Oui, j'aurais du le faire dès le début. :)

Code :
► Afficher le texte
Je joins les fichiers liste.txt et parametres.ini ;)
Fichiers joints
Liste.txt
Liste
(209 Octets) Téléchargé 43 fois
parametres.ini
Parametres
(445 Octets) Téléchargé 71 fois
Modifié en dernier par matcarto le sam. 27 août 2011 18:35, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#10

Message par mikell »

Bon voilà, c'était tout bête (comme souvent) :mrgreen:

Code : Tout sélectionner

   If $line <> "" Then
    $prenomini = IniReadSection(@scriptdir & "\parametres.ini", $line)
    If [color=#FF0000]not @error AND[/color] $prenomini[0][0] <> 5 Then    ; [color=#FF0000]<= vérifie si la section correspondant à la ligne existe[/color]
      $LineNb = $LineNb + 1 ; on incrémente le compteur
      ReDim $LineTab[$LineNb + 1] ; comme on ne sait pas combien il y a de lignes, on redimentionne le tableau ou on les stocke
      $LineTab[$LineNb] = GUICtrlCreateListViewItem($line, $List) ; et on injecte la ligne dans la liste
      EndIf
   EndIf
PS : quand vous postez de grands codes mettez un spoiler
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#11

Message par matcarto »

Merci !! :)

Et comment faire pour que les prénoms qui n'ont pas de section apparaissent aussi dans la liste ? :D

En fait, je voudrais que tous les prénoms apparaissent sauf ceux qui ont 5 clés dans leur section. :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#12

Message par mikell »

Bigre ça n'arrête pas :mrgreen:
matcarto a écrit :Et comment faire pour que les prénoms qui n'ont pas de section apparaissent aussi dans la liste ?
If @error Then ...
matcarto a écrit :... sauf ceux qui ont 5 clés dans leur section. :)
If not @error AND $prenomini[0][0] <> 5 Then ...

ce qui en compact donne :

Code : Tout sélectionner

  If $line <> "" Then
    $prenomini = IniReadSection("parametres.ini", $line)
   [color=#FF0000] If @error OR (not @error AND $prenomini[0][0] <> 5) Then [/color]
      $LineNb = $LineNb + 1 ; on incrémente le compteur
      ReDim $LineTab[$LineNb + 1] ; comme on ne sait pas combien il y a de lignes, on redimentionne le tableau ou on les stocke
      $LineTab[$LineNb] = GUICtrlCreateListViewItem($line, $List) ; et on injecte la ligne dans la liste
   EndIf
  EndIf
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
matcarto
Niveau 2
Niveau 2
Messages : 16
Enregistré le : dim. 14 août 2011 11:52
Status : Hors ligne

Re: [..] Compter le nombre de key d'une section. (fichier .i

#13

Message par matcarto »

Wahou !! Impressionnant. :D Ça parait tellement simple en plus. :)

Merci beaucoup, sujet résolu. ;)
Répondre