Page 1 sur 1

[R] Compter les valeurs dans une clé de registre.

Posté : jeu. 18 mars 2010 13:39
par fred39
Bonjour,
Je voudrais réaliser un traitement pour chaque valeur d'une clé de registre.

j'utilise la fonction regenumval en m'inspirant de l'exemple de l'aide:

Code : Tout sélectionner

For $i = 1 to 100
$var = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\Autoit", $i)
if @error <> 0 Then ExitLoop
MsgBox(4096, "Value Name  #" & $i & " under in AutoIt3 key", $var)
next
 
Seulement, j'aimerais être sur de traiter chaque valeur.
Il peut y en avoir beaucoup plus de 100.
Comment puis-je les compter avant ma boucle?

Merci

Re: [..]Compter les valeurs dans une clé de registre.

Posté : jeu. 18 mars 2010 14:43
par Davyly
Bonjour,

Soit en augmentant le nombre de la boucle. Exemple :

Code : Tout sélectionner

For $i = 1 to 9999
 
Soit en transformant tout simplement ton "For" en un "While". Exemple :

Code : Tout sélectionner

Dim $i = 1
While 1
    $var = RegEnumKey("HKEY_CLASSES_ROOT", $i)
    If @error <> 0 then ExitLoop
    $i += 1
WEnd
MsgBox(0, "Information", "Le nombre de sous clés est de : " & $i - 1)
 
Bon après midi.

Re: [R]Compter les valeurs dans une clé de registre.

Posté : jeu. 18 mars 2010 16:10
par fred39
C'est juste ce qu'il me fallait
while1

Merci Davyly.

Re: [R] Compter les valeurs dans une clé de registre.

Posté : lun. 22 mars 2010 20:54
par GaRydelaMer
Bonjour

une autre idée que j'utilise dans une fonction.

Elle recherche la liste driver ODBC dans le registre, filtre le résultat pour virer les doublons et me retourne un tableau. LA 1ere partie va t'interresser.

Code : Tout sélectionner

Func _ODBC_GetDrivers()
    Local $i = 0, $Drivers = "", $Value = ""
    While @Error = 0
        $i += 1
        $Value = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers", $i)
        If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers", $Value) = "Installed" Then $Drivers &= $Value & "|"
    WEnd
    Local $a = StringSplit($Drivers, "|", 2)
    For $i = UBound($a) - 1 To 0 Step -1
        Switch $a[$i]
            Case "", "Driver da Microsoft para arquivos texto (*.txt; *.csv)", _
                    "Driver do Microsoft Access (*.mdb)", _
                    "Driver do Microsoft dBase (*.dbf)", _
                    "Driver do Microsoft Excel(*.xls)", _
                    "Driver do Microsoft Paradox (*.db )", _
                    "Driver para o Microsoft Visual FoxPro", _
                    "Microsoft Access Driver (*.mdb)", _
                    "Microsoft Access-Treiber (*.mdb)", _
                    "Microsoft dBase-Treiber (*.dbf)", _
                    "Microsoft Excel-Treiber (*.xls)", _
                    "Microsoft ODBC pour Oracle", _
                    "Microsoft Paradox-Treiber (*.db )", _
                    "Microsoft Text-Treiber (*.txt; *.csv)", _
                    "Microsoft Visual FoxPro-Treiber";, _
                _ArrayDelete($a, $i)
        EndSwitch
    Next
    _ArraySort($a)
    Return $a
EndFunc   ;==>_ODBC_GetDrivers