Qui devrait me permettre de trouver le no,bre d'arguments qui sont passés à une fonction ou a une procedure.
Le problême; c'est que je n'arrive pas à appeler cette fonction.
Je fais de la maniere suivante :
Ecrit.nbAttributs test()
ou
Ecrit.nbAttributs test("arg1","arg2",false)
et je recois ce message d'erreur :
compile error: argument not optionnal avec test surligné. Quelqu'un pourrait il me débloquer?
Merci d avance!
(Si la réponse vous convient, appuyez sur réponse acceptée...).
' tableau du
fichier
Dim aFile$()
aFile = Split(sFile, vbCrLf)
' tri des
procédures et fonctions
Dim i&, sBuffer$, aRes$()
ReDim aRes(0)
For i = 0 To UBound(aFile)
aFile(i) = Trim$(aFile(i))
sBuffer = MyLeft(aFile(i), "
")
If sBuffer = "Sub" Or sBuffer = "Function" Then
ReDim Preserve aRes(UBound(aRes) + 1)
aRes(UBound(aRes)) = aFile(i)
End If
Next i
' travail sur ces
résultats
Dim sParams$, aParams$(), j%
For i = 1 To UBound(aRes)
' SAUVE sub ou fonction
sBuffer = MyLeft(aRes(i), "
", True) & " -> "
' params
sParams = MyMid(aRes(i), "(", ")")
' SAUVE nom
sBuffer = sBuffer & MyLeft(aRes(i), "(") & "
["
' params en
tableau
Erase aParams
aParams = Split(sParams, ",")
'
édite
List1.AddItem LeftB$(sBuffer, LenB(sBuffer) - 2)
List1.AddItem "----------------"
Next i
' destroy :p
Erase aParams
Erase aRes
Erase aFile
End Sub
Private Function GetFile(ByVal sPath As String)
Dim FF As Integer
FF = FreeFile
Open sPath For Input As #FF
GetFile = Input(LOF(FF), #FF)
Close #FF
End Function
Private Function MyLeft(ByRef sStr As String, sSepar As String, Optional sDelete As Boolean = False) As
String
Dim lPos As Long
lPos = InStr(1, sStr, sSepar)
If lPos = 0 Then
MyLeft = vbNullString
Else
MyLeft = LeftB$(sStr, (lPos * 2) - 2)
If sDelete Then sStr = RightB$(sStr, LenB(sStr) - LenB(MyLeft) - LenB(sSepar))
End If
End Function
'
Private Function MyMid(ByVal sStr As String, sSeparL As String, sSeparR As String) As String 'pas utilisée
Dim lPosL As Long
Dim lPosR As Long
lPosL = InStr(1, sStr, sSeparL)
lPosR = InStr(lPosL + 1, sStr, sSeparR)
If lPosL = 0 Or lPosR = 1 Then
MyMid = vbNullString
Else
sStr = LeftB$(sStr, (lPosR - 1) * 2)
MyMid = RightB$(sStr, LenB(sStr) - lPosL * 2 - LenB(sSeparL) + 2)
End If
End Function
'
Private Function MyRight(ByRef sStr As String, sSepar As String, Optional sDelete As Boolean = False) As
String
Dim lPos As Long
lPos = InStr(1, sStr, sSepar)
If lPos = 0 Then
MyRight = vbNullString
Else
MyRight = RightB$(sStr, LenB(sStr) - lPos * 2)
If sDelete Then sStr = LeftB$(sStr, lPos * 2 - LenB(sSepar))
End If
End Function
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 15 nov. 2006 à 17:36
Re,
D'apres ce que j'ai compris il souhaiterait faire comme un explorateur d'objet. mais il ne veux pas passer par un fichier.
C'etait ce que j'avais proposé avec un Script Control en récupant le code. mais il ne veux pas.
En revanche je viens de trouver un truc interressant en utilisant TypeLib Information
Et il semblerait à premiere vue que cela pourrait repondre à son problème.
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 15 nov. 2006 à 14:00
Salut 786090 Drikce06ca faisait un moment lol!
Non en fait c'est plutot ici : Ecrit.nbAttributs test("arg1","arg2",false)
Et je recois comme message "Object required". En fair le code de la fonction m'a était donné par jrivet, mais dans son code, il utilise un fichier text qui contient des procedures...
Contenu = Fso.OpenTextFile("C:\Test.txt", ForReading).ReadAll
Sc.Language = "VBScript"
Call Sc.AddCode(Contenu)
Seulement moi, ce que je veux, c'est trouver le no,bre d'arguments d'une proc ou d'une fonction et pour des raisons de gain de temps et de sécurité, je ne peux pas mettre toutes mes fonctions et proc dans un fichier ) disposition de l'utilisateur...
J'espere que tu pourra m'aider!
(Si la réponse vous convient, appuyez sur réponse acceptée...).
Noubliez pas de lire le REGLEMENT
Vous n’avez pas trouvé la réponse que vous recherchez ?
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 15 nov. 2006 à 14:22
ben justement, mes fonctions ne sont pas au même endroit que mon logiciel.
Ce que je voudrais faire, c'est que lorsque qu'il y a appel de fonction par ex si le client click sur le bouton associé a getListeClient qui demande comme argument l'ID du client, ma fonction me retourne 1 (pour un argument...).
Par la suite je met tout ca dans un fichier xml qui va aller chercher sur le serveur la fonction et la lancer grace a l'argument...
Il me fau ce nombre d'argument pour que je puisse faire une boucle qui me comptera et me mettra chaque argument dans la balise xml correspondante. J'espere que c clair comme ca....!
(Si la réponse vous convient, appuyez sur réponse acceptée...).
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 15 nov. 2006 à 14:39
Salut, (re)
Que les experts me corrigent car je suis pas sûr de ce que je vais raconter.
Je suis en train de faire des recherches (problème tres interresant)
Je pense qu il faut essayer de regarder du côté de Microsoft Visual Basic For Applications Extensibility 5.3 Ca parait barbare comme nom... En tout cas cette référence te permet d'utiliser les Objet VBE (qui d'apres ce que j'ai compris represente l'environnement Visual BAsic)
Alors j'ai pas encore regarder en profondeur (mais ca a l'aor coton quand meme) en plus je suis même pas sur que cela t'aidera
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 15 nov. 2006 à 15:57
Re julien...
Bon, cette fois je remet ca a demain, parce que la je suis sur une piste un peu moins propre que celle que j'avais envisagée, mais beaucoup plus longue! Alors je vais finir ca ce soir, et demain je me penche sur ta solution et j'essaie de voir si effectivement cette solution peut marcher!!!!
Mais la, trop de recherche tue la recherche, et j'en ai marre de lire des tutos ou des explications dans toutes les langues du monde (lol!) tout ca pour economiser une centaine de lignes de codes!!!
Par contre je te remercie de t'être penché sur mon problème si longuement!!!
C'est là qu'on voit les gens qui ont la soif de savoir!
(Si la réponse vous convient, appuyez sur réponse acceptée...).
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 15 nov. 2006 à 17:16
SAlut 401740 PCPT Qu est ce que tu pense de la maniere avec VBIDE.VBE (c'est coton a comprendre d'ailleurs)
Sinon j'explore aussi une autre possibilité qui est en essayant d'utiliser la TypeLib Information mais je sèche un peu... j ai trouve un exemple chez M$ mais cela marche sur des ocx, dll
Peu être en conjugant les deux...
Ou alors je vais tout à fait fausse route
@+: =89254 Ju£i?n Pensez: Réponse acceptée
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 15 nov. 2006 à 17:22
salut jrivet,
pour être honnête que je n'ai que survolé les topics (celui-ci et le précédent de tof008), et plus ou moins idem pour les réponses apportées.
VBIDE.VBE n'est une bonne piste que si le but est un AddIn (chose que je n'ai pas lu).
c'est un peu abusé de ma part (mille excuses) mais si tu veux bien me résumer (avec précision néanmoins) ce que tu veux, cad la piste que tu veux explorer, et les infos que tu as trouvé ou qui te posent problème, je chercherai avec toi
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 15 nov. 2006 à 17:40
Bon, alors je t'explique ce que je veux :
sur le fond c'est assez simple : je veux créer une fonction qui lorsque je lui donne en parametre une fonction et ces attributs (ex : addCustomer(nom,prenom)) je veux qu'elle me compte le nombre de parametre de cette fonction, (dans ce cas précis 2) et qu'elle me les donne. Donc dans ce cas, je veux que ma fonction me retourne 2 et nom et prénom.
Le but de cette manoeuvre etant de pouvoir par la suite entrer tout ca dans un fichier xml qui comprendra, entres autres :
<fonction name "addCustomer" nbAtt "2">
<fonction\>
Ce fichier sera par la suite transmis au serveur qui va extraire les infos pour aller chercher dans un fichier WSDL la fonction correspondante puis renverra par xml aussi les resultats qui s afficheront chez le client...
Voila, j'espere avoir été clair, et j'espere surtout que vous pourrez me filer un coup de main ( à ce propos encore merci jrivet pour ton obstination. et merci PCPT pour ton interet!)
Juste pour précision, c'est essentiellement le fait de reussir a recuperer le nombre et la valeur des attributs qui me pose probleme Pour l'envoi ainsi que la presentation dans le fichier xml, les gros prob sont deja reglés.
Pour le moment, en attendant une solution, j'ai entré en dur le nombre d attributs de chaque fonction. Je pourrai rester sur cette idée, mais cette fonction me tient à coeur, c'est presque devenu un défi lol!
(Si la réponse vous convient, appuyez sur réponse acceptée...).
Noubliez pas de lire le REGLEMENT
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 15 nov. 2006 à 17:47
Salut,
je crois que la piste du TypeLib Information n'est pas mauvaise. Voici le lien de l'aide de M$ Dans la section Code Samples il y une section Custom Object Browser Basics :=> Pas le temps de lire mais je pense que cela devrait être utilie
@+: Ju£i?n Pensez: Réponse acceptée
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 15 nov. 2006 à 17:50
Ce qu'il y a c'est que mon but est d'enlever le fichier WSDL du coté client. Alors si à la place je lui met un fichier text qui contient toutes mes methodes, ca ne sert à rien, c'est pour ca que je ne voulais pas passer par un fichier. Par contre j'ai survolé le lien que tu as envoyé et ca ressemble effectivement a ce que je veux... Je regarderais ca ce soir ou demain.... et je vous tiens au courant!
Merci beaucoup
(Si la réponse vous convient, appuyez sur réponse acceptée...).
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 15 nov. 2006 à 18:05
jrivet -> tlbinf32, je l'avais (sans doute fournie avec SP6 de VB)
lien wiki, déjà j'apprend qu'il y a des sources, c'est très bon à savoir.
et pour le projet en particulier, extrêmement intéressant !
par contre dans l'optique (mal définie, ou mal comprise pour ma part en tout cas) voulue, çà me semble "trop" pour "peu" !
le but est l'accès aux fonctions après compilation? simple listage il me semble, ce qui n'est pas le cas dans l'exemple fourni (wiki)
j'vais faire un exemple plus propre et héberger...
nb : ce qui me choque avec cette tlb : çà laisse une énorme porte ouverte pour l'accès (source) d'un exe compilé
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 15 nov. 2006 à 23:27
désolé mais là j'ai plus le courage....
j'avais terminé, réussi tout comme il faut, avec accès par objet (3 classes), affichage RTB, treeview, WebBrowser, sauf que j'ai oublié de renommer le fichier de sortie (exemple : Frm_Main.frm en Frm_Main.frm.XML)
résultat, comme je testais avec les fichiers code, beh écrasement !
c'est faisable et pas très compliqué mais là je passe la main
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp