Appelé du code contenu dans un fichier

Résolu
Messages postés
24
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
28 avril 2011
-
Messages postés
24
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
28 avril 2011
-
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.

J'espère avoir été suffisament clair.

Merci à tous

7 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

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"

C'est tout, et ça marche :)

Gérôme GUILLEMIN
Auteur du langage FBSL
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Sinon en VB6 tu utilises le ScriptControl qui te permet de faire interpreter des chaine de caratere comme des procédures.

Je prépare un petit exemple.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
24
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
28 avril 2011

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
Messages postés
24
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
28 avril 2011

Merci jrivet.

Ta réponse m'intéresse.
J'essayerai ça demain et vous tien au courant.

A+

ps: je suis ouvert à toutes autres solutions
Messages postés
206
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

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)

Const FBVT_STRING = 30
Const FBVT_INTEGER = 3
Const FBVT_DOUBLE = 5
Const FBVT_SINGLE = 4

Const ccode = "Return Right(""Hello"", 4) & 5 + 5 / 12 * PI"

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

Gérôme GUILLEMIN
Auteur du langage FBSL
Messages postés
24
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
28 avril 2011

Merci GEDDi pour ton code, mais je vais garder la solution de jrivet que j'ai réussi à faire fonctionner.
Encore merci à vous.

A+