Newsgroup: it.comp.lang.visual-basic
Titolo: Ricompilare.

Se ho un progetto che fa riferimento a una dll scritta in vb6
cambio i metodi della dll (agiungo dei nuovi metodi),
devo ricompilare il progetto o basta solo
deregistrare e registrare la mia nuova Dll ?

 ha scritto nel messaggio
news:nKh2d.5960$Ie2....@tornado.fastwebnet.it...

Devi mantenere la compatibilità con la versione precedente, per fare ciò,
non devi alterare l'interfaccia esistente cambiando ad es. gli argomenti
delle proprietà o dei metodi, puoi cambiare tuttavia il codice in esse
contenuto.
L'aggiunta di metodi e proprietà non rompe la compatibilità  perchè estende
l' interfaccia esistente senza modificarla.
Se devi riscrivere un metodo o una proprietà della vecchia intefaccia
conviene sempre scriverne una seconda versione in aggiunta alla prima, in
tale modo i programmi 'vecchi' che utilizzano il metodo vecchio continuano a
funzionare.
Ciao

 funzionare.
E' importante ricordare che tutto questo e' valido a patto che sia stata
impostata, nelle proprieta' del progetto relativo alla DLL, l'opzione di
compatibilita' binaria.
Viceversa qualsiasi ricompilazione, anche senza modifiche al sorgente,
genera comunque nuovi CLSID e quindi rompe sempre la compatibilita'.
La guida per i dettagli
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 ha scritto nel messaggio
news:nKh2d.5960$Ie2....@tornado.fastwebnet.it...


 ho letto sembra di no, vai avete altre informazioni in merito.
No, se usi la CreateObject non ti interessa la compatibilità, perchè in quel
caso usi il late-binding.
Questo significa che il tuo programma non controlla al momento della
compilazione la struttura della tua dll, ma lo fa solo di volta in volta a
run-time cercando il metodo richiesto.
Questo ti da una maggiore flessibilità, ma perdi tantissimo in sicurezza del
codice (non sei mai sicuro che funzioni finchè non lo esegui) e in
prestazioni nelle chiamate perchè appunto ogni volta VB deve andare a
cercare la funzione nella dll.
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 in quel caso usi il late-binding.
Ho visto cose che voi umani...
E se uno referenzia la libreria, istanzia la variabile con riferimento alla
classe vera e propria, "così faccio prima a digitare", e poi usa il
CreateObject al posto del Set New?
Ciao
Alberto


e se mia zia invece della crema di porri cucinasse la crema di asparagi?
e se sulla Luna arrivasse un omino un po spelacchiato che dichiara "qui ci
faccio Milano 7"???
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 CreateObject al posto del Set New?
E' un fesso, perchè rinuncia all'intellisense e all'early binding,
portandosi dietro pure un riferimento che non usa :)


 portandosi dietro pure un riferimento che non usa :)
No, se la variabile e' dichiarata con il tipo giusto come dice Albe, e non
'As Object', l'uso del CreateObject, seppure poco utile, non ha
controindicazioni.


 controindicazioni.
Ah, beh, certo :)
In questo caso si paga solo il "cast" da object al tipo dichiarato.
Ma in questo caso resta comunque un fesso ;) perchè è più comodo e meno
rischioso usare una New.
La createObject va bene nel caso di plugin, dei quali non ci si deve
preoccupare della compatibilità binaria.


 controindicazioni.
Il mio post era, ovviamente, ironico, e le controindicazioni sono quelle di
cui si legge nell'OP.
Ciao
Alberto
--
"Non mi sembra piů granda del Delfino..."
"A partir dal fat che la merda liquida
l'as drisa gnan a puntlarla,
cňsta chě l'č piň granda, gnuranta."