Recherche dans un fichier ini section et valeur des clés

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Mickdu59
Niveau 2
Niveau 2
Messages : 23
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Recherche dans un fichier ini section et valeur des clés

#1

Message par Mickdu59 »

Bonjour , J'ai un ptit soucis , le script ci dessous recherche uniquement le nom des programmes de mon ini
Je voudrais savoir s il serait possible de le faire rechercher dans les sections mais aussi dans les clés en même temps
par exemple Le nom , Desc , et tag ?

Merci pour votre aide

Image

Script pour la recherche

Code : Tout sélectionner

Func _search()
        $search = _GUICtrlListView_FindText($ListView0, GUICtrlRead($Input1))
		WinSetTitle($Form1, "", "Recherche de "&GUICtrlRead($Input1)&" dans la base de donnée")

	    _GUICtrlListView_DeleteAllItems($ListView0)
        $array = IniReadSectionNames($iniFile)

            ; Is there anything in the input?
            $sText = GUICtrlRead($Input1)           ; search
            If StringLen($sText) <> 0 Then
                ; Create a list of matches
                Local $aMatch_List[1] = [0]

                $iStart = 1
                For $i = 1 To UBound($array) - 1

				    $tag = IniRead($iniFile, $array[$i], "Tag", "")
                    $desc = IniRead($iniFile, $array[$i], "Desc", "")
					$pub = IniRead($iniFile, $array[$i], "Publisher", "")
					$date = IniRead($iniFile, $array[$i], "Date", "")
					$version = IniRead($iniFile, $array[$i], "Version", "")
                    ; Look for the match
                    If StringInStr($array[$i], $sText) Then

                        ; Add to list
                        $aMatch_List[0] += 1
						;_ArrayDisplay($aMatch_List)
                        ReDim $aMatch_List[$aMatch_List[0] + 1]

                        $aMatch_List[$aMatch_List[0]] = ""&$array[$i] & "|" & $desc & "|"&$tag ;$ desc[$ i] don't want to work because desc is not an array
                        ; GUICtrlCreateListViewItem($aMatch_List[$aMatch_List[0]], $ListView0); test
                    EndIf
                Next
                ; Add matches to ListView
                _GUICtrlListView_BeginUpdate($ListView0)
                For $i = 1 To $aMatch_List[0]
                    ;GUICtrlCreateListViewItem($aMatch_List[$i], $ListView0)
                Next
                _GUICtrlListView_EndUpdate($ListView0)
            Else
                ; Reload everything
                ;ContinueCase
			 EndIf
    
	

EndFunc
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 391
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: Recherche dans un fichier ini section et valeur des clés

#2

Message par jl56 »

Bonjour,

Vous lisez déjà les clés par les iniread... , il ne vous reste qu'a tester la présence du nom

If StringInStr($tag, $sText) Then ...
If StringInStr($desc, $sText) Then ...

ou en ajoutant à votre ligne

If StringInStr($array[$i], $sText) or If StringInStr($tag, $sText) or If StringInStr($desc, $sText) Then

selon ce que vous voulez gérer

cordialement,

JL56
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 934
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Recherche dans un fichier ini section et valeur des clés

#3

Message par walkson »

Bonjour,
Quelque chose comme ça ?
[vache]
pattes=4
queue=longue
yeux=marron
[canard]
pattes=2
queue=sans
yeux=vert
[chat]
pattes=4
queue=moyenne
yeux=bleu

Code : Tout sélectionner

#include <Array.au3>
$File = @ScriptDir & "\fichier.ini"
$arraysection = IniReadSectionNames($File);Retourne un tableau contenant tous les noms de section du fichier INI.
_ArrayDisplay($arraysection); à supprimer
Local $arrayclef, $text

For $i = 1 To $arraysection[0];on boucle sur les sections
	If $arraysection[$i] = "canard" Then
		$arrayclef = IniReadSection($File, $arraysection[$i]);Retourne un tableau à 2 dimensions où l'élément [n][0] est la clé et l'élément [n][1] est la valeur.
		_ArrayDisplay($arrayclef); à supprimer
		For $y = 1 To UBound($arrayclef) - 1 ;on boucle sur les clefs
			If $arrayclef[$y][0] = "pattes" Then $text &= "a " & $arrayclef[$y][1] &" "&  $arrayclef[$y][0] &@CRLF
			If $arrayclef[$y][0] = "yeux" Then $text &= $arrayclef[$y][0] &" sont "& $arrayclef[$y][1]
		Next
		ExitLoop
	EndIf
Next
MsgBox(0,"canard",$text)
;============== on cherche qui a les yeux bleus ===============================================================
$text = ""
$arraysection = IniReadSectionNames($File);Retourne un tableau contenant tous les noms de section du fichier INI.
Local $arrayclef, $text
For $i = 1 To $arraysection[0];on boucle sur les sections
		$arrayclef = IniReadSection($File, $arraysection[$i]);Retourne un tableau à 2 dimensions où l'élément [n][0] est la clé et l'élément [n][1] est la valeur.
		For $y = 1 To UBound($arrayclef) - 1 ;on boucle sur les clefs
			If $arrayclef[$y][1] = "bleu" Then $text &=$arraysection[$i] &" "&  $arrayclef[$y][0] &" sont "& $arrayclef[$y][1]
		Next

Next
MsgBox(0,"",$text)

On cherche le canard (section) puis le nombre de pattes et la couleur des yeux (clef)
Après j'ai inversé le problème, je cherche qui a les yeux bleus (clef) pour obtenir la section
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre