Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
VB6 - Richiamare classi interne al codice di un programma mediante l'o...
giovedì 15 novembre 2012 - 10.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VBScript
Osiride80
Profilo
| Newbie
21
messaggi | Data Invio:
gio 15 nov 2012 - 10:23
Ciao a tutti,
Ho creato un programma in grado di leggere file vbs esterni grazie all'oggetto scriptcontrol, e ho bisogno di richiamare delle classi interne al programma.
Facendo un banale esempio.. ipotizzando di avere una classe ObjAuto, nel codice interno del programma scriverò:
Script.AddObject "Auto", ObjAuto, True
dove Auto, all'interno del codice è già stato valorizzato nelle sue proprietà.
Ho inserito poi un richtextcontrol, in cui a programma avviato, passerò le istruzioni digitate in vbs tramite queste istruzioni:
With ActiveForm
.Script.AddCode .RtfScript.Text
.Script.Run "Main"
End With
Fino qui tutto bene, avvio il mio programma per digitare le mie istruzioni vbs, come ad esempio:
sub Main()
msgbox Auto.velocità
end sub
dove magari mi viene stampato.. 90 km/h
ora arriva LA MIA DOMANDA..
In un codice vb creo l'oggetto Auto cosi..
Dim Auto as ObjAuto
Set Auto = new ObjAuto
così potro anche creare un oggetto Auto1, Auto2 ecc..
Per fare la stessa cosa scrivendo codice vbs a programma avviato come devo fare? Mi spiego meglio..
Avendo aggiunto allo scriptcontrol l'oggetto Auto (a programma avviato e nella finestra vbs predisposta) protrò usarlo immediatamente come già esposto prima:
sub Main()
msgbox Auto.velocità
end sub
MA ricevo un errore nel caso in cui volessi creare un nuovo oggetto Auto con le seguenti istruzioni:
sub Main()
dim Auto1
set Auto1 = CreateObject("ObjAuto")
end sub
comparendo il messaggio: Il componente ActiveX non può creare l'oggetto: 'ObjAuto'
Allacciandomi a quando chiesto devo chiedere ancora una seconda cosa. L'oggetto Auto aggiunto allo scriptcontrol è stato preventivamente istanziato nel codice interno del programma per il quale è stata allocata della memoria, quindi reso immediatamente disponibile per essere richiamato da istruzioni vbs (a programma avviato). C'è invece un modo per istanziare l'oggetto da istruzioni vbs, in modo da allocarne memoria solo quando necessario e in tal modo poter anche dichiarare più oggetti Auto come chiedevo prima?
Spero di essere stato abbastanza chiaro nella spiegazione e ringrazio chi mi potrà aiutare.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RISOLUZIONE DEL PROBLEMA TROVATA!
Visto che non me ne sto con le mani in mano e non mi arrendo, ma cerco di realizzare anche le cose che all'apprenza mi sembra di non riuscire a fare.. il problema si risolve agilmente creando una dll con gli oggetti che servono. La dll deve essere registrata tramite il comando regsvr32 "percorso della dll" da esegui.
Si aggiunge la dll come riferimento al progetto che si sta creando.
Mettiamo il caso che abbiamo creato una dll di nome Miadll.dll al cui interno c'è una classe MioOggetto che contiene le proprietà Get/Let per scrittura e lettura del del dato all'interno dell'oggetto.
Avviando il progetto a cui abbiamo aggiunto il controllo scriptcontrol.. dando per scontato che ci sia una textbox multilinea o un richtextbox, in cui digitare del codice vbscript, e un pulsante da premere per avviare il codice digitato, SI PUO' creare e distruggere l'oggetto che vogliamo usare (quello che fa riferimento alla nostra dll), cosa che non può avvenire se si aggiunge un oggetto da codice all'oggetto scriptcontrolo tramite l'istruzione AddObject. Quindi a questo punto è possibile procedere come si fa per un qualsiasi oggetto che si vuole creare e distruggere.
CREAZIONE OGGETTO
dim MioOggetto
set MioOggetto = CreateObject("Miadll.MioOggetto")
DISTRUZIONE OGGETTO
Set MioOggetto = Nothing
Questa è una cosa direi parecchio utile quando c'è bisogno di creare più istanze di un oggetto che ci possono servire per gli usi più disparati e che non si possono creare utilizzando un oggetto già creato da codice di un progetto vb e aggiunto allo scripcontrol mediante listruzione AddObject.
PROBLEMA RISOLTO.. se nessuno ha intenzione di aggiugere altro la discussione si può considerare chiusa.
Un saluto a tutti gli utenti!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !