Page 1 sur 1

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

Posté : mar. 23 nov. 2021 07:34
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

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

Posté : mer. 24 nov. 2021 19:40
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

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

Posté : jeu. 25 nov. 2021 21:36
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

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

Posté : dim. 28 nov. 2021 13:47
par Mickdu59
Merci pour vos réponses , c'est exactement ce que je voulais 👍