Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [VB6] Esegui Stringa

  1. #1

    [VB6] Esegui Stringa

    Ciao, mi è venuto un dubbio, a chi mi può aiutare:

    codice di esempio:
    codice:
    Dim stringa_da_eseguire As String
    Dim a As Integer
    
    
    Private Sub Command1_Click()
        stringa_da_eseguire = "a=10+50"
        'esegui stringa_da_eseguire
        MsgBox a
    End Sub
    all'evento Click del Command1 voglio che la stringa stringa_da_eseguire venga eseguita come se quella parte di codice fosse:

    codice:
    Private Sub Command1_Click()
        a=10+50
        MsgBox a
    End Sub
    qualcuno mi può aiutare?

    grazie
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  2. #2
    potresti richiamare una funzione
    es:

    codice:
    Dim a As Integer
    
    Private Sub Command1_Click()
        a = Calcola
        MsgBox a
    End Sub
    
    Private Function Calcola() as Integer
        Calcola = 10+50
    End Function
    prude il dito, lui sdraiato
    ha giocato a guardie e ladri col ladro sbagliato

  3. #3
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Na cosa del genere???

    Dim a As Integer

    Private Sub Command1_Click()
    stringa_da_eseguire = "a=10+50"
    a = Calcola(stringa_da_eseguire)
    MsgBox a
    End Sub

    Private Function Calcola(stringa_da_eseguire) As Integer
    valori = Split(stringa_da_eseguire, "=")
    valSomma = Split(valori(1), "+")
    Calcola = CInt(valSomma(0)) + CInt(valSomma(1))
    End Function
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  4. #4
    Utente di HTML.it L'avatar di cik
    Registrato dal
    Jul 2003
    Messaggi
    449
    se ho capito il problema è quello di eseguire l'istruzione contenuta in una stringa.

    Mi pare di aver letto in questo forum che si possa fare.
    Prova a fare una ricerca nel forum quando la riattivano
    S'i fosse foco, arderei 'l mondo

  5. #5
    Un sistema molto più sofisticato, che comprende oltre agli operatori aritmetici anche le classiche funzioni matematiche e stringa di VB, si ottiene con la libreria "Microsoft Script Control 1.0" che puoi caricare nel progetto attraverso il menu Progetto/Riferimenti. Supponiamo di avere un form con due Textbox e un pulsante: scrivo in Text1 l'espressione da eseguire, premo Command1 per eseguire l'espressione e vedo il risultato in Text2:
    codice:
    Private Sub Command1_Click()
       Dim sc As New ScriptControl
       Dim res As String
    
       sc.Language = "VBSCRIPT"
    
       On Error resume Next
       res = sc.Eval(Text1.Text)
    
       If Err.Number = 0 Then
          Text2.Text = res
       Else
          Text2.Text = Err.Description
       End If
    End Sub
    Se Scrivo in Text1: Log(8) / Log(2) + Sqr(9)
    e premo il pulsante, ottengo come risultato "6"
    Chi non cerca trova.

  6. #6
    GudFella e Sypher, volevo che la stringa veniva eseguita direttamente
    la proposta di tas mi sembra interessante...

    fosse per me creerei una funzione apposta ma sto problema mi hanno chiesto altri di risolverlo e mi è stato proposto così....


    altre info sono gradite....
    tnx
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  7. #7
    stavo ragionando su quanto mi è stato chiesto...

    è impossibile fare una cosa del genere:

    partendo dal presupposto che VB6 è compilato....

    in:
    codice:
    dim stringa_da_eseguire as string
    dim a as integer
    Private Sub Command1_Click()
        stringa_da_eseguire = "a=10+50"
        'esegui stringa_da_eseguire
        MsgBox a
    End Sub
    la parte a=10+50 non verrà mai compilata come se fosse:

    codice:
    dim a as integer
    Private Sub Command1_Click()
        a=10+50
        MsgBox a
    End Sub
    per ovvi motivi

    e quindi in esecuzione non potrà mai essere fatta girare.... a meno che non si usi un espediente tipo quelli che erano stati detti prima, che però non vanno perchè mi era stato dato come richiesta anche l' esempio:

    codice:
    dim stringa_da_eseguire as string
    Private Sub Command1_Click()
        stringa_da_eseguire = "txtProva.enable"
        'esegui stringa_da_eseguire
    End Sub
    sono stato un pò complicato, se ho detto ca#@ate smentitemi e illuminatemi,

    TY

    Marco
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    direttamente in vb non puoi farlo poichè non esiste il comando evaluate. La risposta su come fare te l'ha data Tas, utilizzando Microsoft Script Control che ha quel comando di valutazione di espressioni.
    Ans.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.