Utilizzo Dll

mercoledì 29 aprile 2009 - 17.57

pedro8a Profilo | Junior Member

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

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

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

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

>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

> 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

Grazie,
gentilissimo e chiaro.

Ciao
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 !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5