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
Utilizzo Dll
mercoledì 29 aprile 2009 - 17.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
pedro8a
Profilo
| Junior Member
178
messaggi | Data Invio:
mer 29 apr 2009 - 17:57
Ciao a tutti,
ho creato con vb6 una dll per delle funzioni ripetitive che avevo messo in una classe.
Ora ho tolto le classi dal progetto e le ho messe in una dll.
Nel progetto ho messo il riferimento a questa dll.
Ogni volta che faccio modifiche alla dll l'exe del progetto non funziona, nel senso che debbo registrare di nuovo la dll con regsvr....
Ma non posso richiamare la dll solo quando mi serve e non rischiare che il programma non funziona?
Dainesi
Profilo
| Senior Member
476
messaggi | Data Invio:
mer 29 apr 2009 - 19:22
Tutto dipende se vuoi l'early-binding o il late-binding. Con il late binding puoi richiamare la dll e le sue classi solo alla bisogna senza dover registrare ogni volta la libreria nel progetto.
.
Autore del libro sul FOREX, MetaTrader e creazione dei trading system
http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872
pedro8a
Profilo
| Junior Member
178
messaggi | Data Invio:
gio 30 apr 2009 - 09:29
E quello che dici come si traduce in codice?
Nel senso che voglio richiamare la dll quando mi serve.
Ma voi esperti sviluppatori come fate?
Dainesi
Profilo
| Senior Member
476
messaggi | Data Invio:
gio 30 apr 2009 - 12:00
In pratica se vuoi usare il late-binding, devi dichiare una variabile come oggetto e poi referenziarla.
Ipotizza che la tua DLL esporti gli oggetti come NomeProgettoDLL.NomeClasse (Es. Ferrari.Modena)
per poter utillizzare l'oggetto devi fare così:
Dim oCar As Object
...
Set oCar = CreateObject("Ferrari.Modena")
'Invochi i metodi
oCar.CambiaMarcia(1)
oCar.Accellera
'In caso di autovelox ...
oCar.CamuffaTarga
'Elimino l'oggetto
oCar.Close
Set oCar = Nothing
Tieni conto che a differenza dell'Earlybinding qui l'IDE non conosce i metodi della classe perciò scordati la funzionalità IntelliSense, qui è StupidSense !
.
Autore del libro sul FOREX, MetaTrader e creazione dei trading system
http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872
pedro8a
Profilo
| Junior Member
178
messaggi | Data Invio:
gio 30 apr 2009 - 12:46
>In pratica se vuoi usare il late-binding, devi dichiare una variabile
>come oggetto e poi referenziarla.
>
>Ipotizza che la tua DLL esporti gli oggetti come NomeProgettoDLL.NomeClasse
>(Es. Ferrari.Modena)
>
>per poter utillizzare l'oggetto devi fare così:
>
>Dim oCar As Object
>
>...
>
>
>Set oCar = CreateObject("Ferrari.Modena")
>'Invochi i metodi
>oCar.CambiaMarcia(1)
>oCar.Accellera
>'In caso di autovelox ...
>oCar.CamuffaTarga
Debbo fare delle prova, ma come fa a capire dove è situata la dll?
>
>'Elimino l'oggetto
>oCar.Close
>Set oCar = Nothing
>
>Tieni conto che a differenza dell'Earlybinding qui l'IDE non
>conosce i metodi della classe perciò scordati la funzionalità
>IntelliSense, qui è StupidSense !
Osservazione da non trascurare.
Stavo pensando, si può controllare all'apertura del prg o del form che utilizza la dll se questa è registrata ed eventualmente da codice e senza far vedere nulla all'utente registrarla?
Grazie
>
>.
>Autore del libro sul FOREX, MetaTrader e creazione dei trading
>system
http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872
Dainesi
Profilo
| Senior Member
476
messaggi | Data Invio:
gio 30 apr 2009 - 13:40
> come fa a capire dove è situata la dll?
Non è necessario saperlo. La DLL basta che sia registrata e una volta invocata tramite il metodo CreateObject è il sisema operativo che veicola il marshaling per le chiamate.
>si può controllare all'apertura del prg o del form che utilizza la dll se questa è registrata ed eventualmente da codice e senza far vedere nulla all'utente registrarla?
Certo che si può. Isoli la CreateObject all'interno di un OnError GoTo ..., se manca il riferimento allora controlli che ci sia il file (se è di tua produzione immagino tu sappia dove dovrebbe trovarsi) che in linea di principio è in Windows\System32. Se non ci fosse hai ancora due possibilità: copiarla da una cartella di rete o scaricarla da un tuo sito http o ftp e quindi registrarla. Come si registra ? Ma con Shell a cui fai seguire i comandi e parametri corretti: Shell("Regsvr32.exe C:\Windows\System32\Ferrari.dll /s", vbHide)
Ricordati solo di creare correttamente la stringa che definisce il persorso della DLL.
>Ma voi esperti sviluppatori come fate?
Non lo sò nemmeno io. Ormai siamo ad uno stadio avanzato di mutazione genetica. Mentre le persone normali usano i Post-it noi andiamo a "puntatori" !!!
.
Autore del libro sul FOREX, MetaTrader e creazione dei trading system
http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872
pedro8a
Profilo
| Junior Member
178
messaggi | Data Invio:
lun 4 mag 2009 - 17:31
Grazie,
gentilissimo e chiaro.
Ciao
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 !