DES OUTILS POUR TRAVAILLER AVEC LA BASE DE REGISTRE

Signaler
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22918-des-outils-pour-travailler-avec-la-base-de-registre

cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Ta remarque non plus ;-)
Dragonmaster
Messages postés
127
Date d'inscription
vendredi 20 août 2004
Statut
Membre
Dernière intervention
3 avril 2009

Je ne pense pas que celà vaut le niveau "expert" !
cs_viran
Messages postés
104
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
31 décembre 2006

Je n'arrive pas a lire els fichiers comment je peux faire pour les lire?
philoo91
Messages postés
46
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
13 juillet 2009

Salut,
CountValue utilise ReadKeyListValue(Path)
où path est une chaine.
Si celle ci est nulle la fonction ReadKeyListValue retournera un tableau
vide.
Vue que au retour de ReadKeyListValue on utilise justement l'instruction ubound, si le tableau est vide ça plante.
Donc la solution est de faire ainsi :

Public Function ReadKeyListValue(ByVal Path As String) As String()
Dim RootKey As Long
Dim Ret As Long
Dim RetData As Long
Dim hKey As Long
Dim Compteur As Long
Dim sName As String
Dim sData As String
Dim List() As String

ReDim Preserve List(0)
ReadKeyListValue = List
RootKey = ValuePath(Path)

If RootKey = 0 Then Exit Function

If RegOpenKey(RootKey, StringPath(RootKey, Path), hKey) = 0 Then
sName = Space(StringLenth)
Ret = StringLenth
Compteur = 0
While RegEnumValue(hKey, Compteur, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS
ReDim Preserve List(Compteur)
List(UBound(List)) = Trim(Left(sName, Ret))
Compteur = Compteur + 1
sName = Space(StringLenth)
sData = Space(StringLenth)
Ret = StringLenth
RetData = StringLenth
Wend
RegCloseKey hKey
End If
ReadKeyListValue = List
End Function
Public Function CountValues(ByVal Path As String) As Double
CountValues = UBound(ReadKeyListValue(Path))
End Function
shinkan
Messages postés
14
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
14 avril 2005

GROS PROBLEME, mais cette fois ci j'y suis pour rien.
Lors de l'appel de la fonction "CountValues" je reçois le message d'erreur suivant :

Run Time Error '9' :
Subscript Out Of Range

Je n'obtient pas ce message si je passe une chaine de caractere de 64 caractères à la fonction, en revanche, dès que je lui en passe plus, j'ai ce message d'erreur ... et je ne vois pas comment faire pour me sauver de cette situation désatreuse pour mon projet ...

Merci d'avance aux masses qui réussiront à trouver comment faire.
philoo91
Messages postés
46
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
13 juillet 2009

Mets un CALL devant
ou bien vire les parentheses
shinkan
Messages postés
14
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
14 avril 2005

J'ai un gros probleme avec la fonction WriteKeyValue qui ne fonctionne pas comme je voudrais...
Voilà la syntaxe que j'utilise :

1 Private Sub Form_Load()
2 Dim Initi As New RegFunc
3 Initi.WriteKeyValue("HKLM\SOFTWARE\Monsoft", "Initialise", "1")
4 End Sub

RegFunc est le module de classe fourni dans le zip.
Je reçois le message d'erreur suivant à propos de la ligne 3 :
Compile Error :
Expected : =

La ligne 3 se met en rouge. Compilation impossible bien sûr.
Je suis débutant et je ne comprends pas cette erreur, d'autant plus que WriteKeyValue n'est censée rien renvoyer, donc comment le compilateur peut il attendre que je colle un = ?????

Merci d'avance.
philoo91
Messages postés
46
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
13 juillet 2009

Oui effectivement pour le post de SHINKAN dans l'empressement j'ai un peu merdé.

Pour AZERTY :
La différence entre un module standard (.BAS) et un module de classe (.CLS) est la suivante :

Avec un module de classe tu peut référencé ensuite une variable objet
comme ça : Set MonObjetDeClasse = new ClasseOBJET

Avec un module de classe tu peut faire une dll et appeler les fonctions et routines depuis la variable l'objet et ce depuis un autre projet dans lequel tu auras pris soin de charger la dite dll avec projet/référence du menu
cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Moi non plus, j'ai toujours eu du mal a faire la différence entre les 2, mais en résumé, le module de classe représente un objet avec des methodes et un module simple un un modul avec des fonctions, comme les forms (qui sont des modules particuliers d'ailleur)
shinkan
Messages postés
14
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
14 avril 2005

C'est moi qui cherchait, merci beaucoup, je sais pas où tu as trouvé ça mais ça me sauve la vie !!
En tous cas, si toi aussi tu en as l'utilité, sache quele module de classe utilisé est erroné à la fin :

Public Function CountValues(ByVal Path As String) As Double
CountFolders = UBound(ReadKeyListValue(Path))
End Function

Il faut biensûr remplacer "CountFolders" par "CountValues".
Autre chose : pourquoi un module de classe et pas un module classique ? Juste pour le fun ? Je suis débutant et j'en voit pas l'utilité là ...
cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

C'est pas vmt moi qui cherchait ceci, de plus, on parlai de scanneur ;) mais bon apparament, c'est fonctionnel, pratique, mais déja sur le site