Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 avril 2011
-
21 nov. 2007 à 15:36
Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 avril 2011
-
22 nov. 2007 à 10:23
Salut à tous.
Voilà, j'aurais voulu savoir s'il était possible d'appeler à partir de vb6 du code contenu dans un fichier.
exemple:
Voilà ce que contiendrai mon fichier, et je voudrai appeler ce bout de code à partir de mon appli vb6 en passant en paramètre ma variable Valeur.
dim chaine as string
Select Case Valeur
Case 1 = 1
chaine = "réponse 1"
Case 2 = 2
chaine = "réponse 2"
End Select
return chaine
je veux pouvoir modifier mon code directement dans le bloc note par exemple, sans être obliger de repasser par visual studio.
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 nov. 2007 à 16:29
Re,
Ah ca change la donne Tant pis mon petit exemple est pres alors je le montre.
C'est moins facile qu'en FBSL... mais bon
Option Explicit
Private Sub Form_Load()
'Le contrenu de "C:\Toto.txt est
'Function GetValeur(Chaine, Retour)
'Select Case Chaine
' Case "1": Retour = "Reponse 1"
' Case "2": Retour = "Reponse 2"
' Case Else: Retour = "Reponse Inconnue"
'End Select
'End Function
Call InterpreteCode("C:\toto.txt")
End Function<hr />
Private Sub InterpreteCode(ByVal Fichier As String)
Dim NumFile As Integer
Dim Contenu As String
'IlFaut Cocher en référence
'Microsoft Script Control 1.0
Dim MScript As New ScriptControl
NumFile = FreeFile
'Récupère le contenu entier du fichier
Open Fichier For Binary As NumFile
Contenu = String(LOF(NumFile), 0)
Get #NumFile, , Contenu
Close #NumFile
'ATTENTION LES PARAMETRES
'DOIVENT ETRE VARIANT
Dim Param
Dim Retour
Param = "156"
With MScript
'Langage du script
.Language = "VBScript"
'Reset Eventuel
Call .AddCode(Contenu)
'IL faut connaitre le nom de la procédure
Call .Run("GetValeur", Param, Retour)
End With
MsgBox Retour
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 21 nov. 2007 à 15:45
Héhé,
En VBA tu peux 'injecter' un module de code dans Excel, Word, PPT par exemple et le jouer dans l'objet CodePane, mais en VB 6 je ne pense pas que tu puisses le faire :)
Essayes avec mon langage( FBSL, tres proche du VB (cf dans mon link) ) qui lui le permet tres simplement de cette manière :
Exemple tu as un fichier 'Toto.code' dans lequel tu as mis du code 'dynamique' cad pret à etre 'joué' depuis un programme 'compilé' mais ne connaissant pas encore le contenu de 'Toto.code'
Donc tapes ceci dans ton programme principal, quu tu vas ensuite compiler :
#include_once "./Toto.code"
Toto3544
Messages postés24Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention28 avril 2011 21 nov. 2007 à 16:27
Merci pour vos réponse.
En faite, je ne veux pas être obligé de déclarer mon fichier au préalable.
Je veux pouvoir en ajouter un quand je veux, à la racine de mon appli, sans modifier mon code principal.
Genre faire un appel par un shell ou un truc dans le genre et puis c tout. Pas d'include.
Est-ce possible?
Encore merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 21 nov. 2007 à 21:01
Hello,
Voici du code VBA (VB et portable facilement en VBnet) qui permet de charger FBSL.DLL et donc de jouer du code FBSL à la volée et de récupérer le retour :
Option Explicit
Private Declare Function FBSL_ExecuteScriptFile Lib "fbsl.dll" (ByVal szScriptfile$) As Long
Private Declare Function FBSL_GetReturnValue Lib "fbsl.dll" (ByVal pValue As Long, ByVal iType As Long) As Long
Private Declare Function FBSL_ExecuteScriptBuffer Lib "fbsl.dll" (ByVal ExternalBuffer$) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Public Sub cmdRetCode()
If Trim$(ccode) <> "" Then
Dim i As Long
FBSL_ExecuteScriptBuffer ccode: DoEvents
'i = FBSL_GetReturnValue(1&, 0) ' Get the return type
i = FBSL_GetReturnValue(0&, FBVT_STRING)
Dim sSave As String, mStr As String sSave Space(i): mStr Space(i)
FBSL_GetReturnValue StrPtr(sSave), FBVT_STRING
CopyMemory ByVal StrPtr(mStr), ByVal StrPtr(sSave), i
sSave = Left(StrConv(mStr, vbUnicode), i)
MsgBox "Returned value == " & sSave, vbApplicationModal, "RETURN CODE IS :"
End If
End Sub