DES OUTILS POUR TRAVAILLER AVEC LA BASE DE REGISTRE

cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 18 mai 2004 à 13:30
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 6 oct. 2004 à 17:27
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 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
6 oct. 2004 à 17:27
Ta remarque non plus ;-)
Dragonmaster Messages postés 126 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 3 avril 2009
6 oct. 2004 à 15:57
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
8 sept. 2004 à 14:26
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
24 mai 2004 à 08:05
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
21 mai 2004 à 19:21
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
21 mai 2004 à 14:00
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
21 mai 2004 à 13:26
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
21 mai 2004 à 07:59
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 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
20 mai 2004 à 00:13
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
19 mai 2004 à 23:56
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 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
18 mai 2004 à 13:30
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
Rejoignez-nous