<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Visual Basic 6 e COM</title>
        <link>http://blogs.ugidotnet.org/dotnet4ever/category/Visual Basic 6 e COM.aspx</link>
        <description>Visual Basic 6 e COM</description>
        <language>it-IT</language>
        <copyright>Michele Bernardi</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>DLL HELL</title>
            <link>http://blogs.ugidotnet.org/dotnet4ever/archive/2004/11/18/5743.aspx</link>
            <description>


Sottotitolo: 
Ovvero perché AMO dotNET!
Premesse: é capitato in 3 o 4 
casi che l'installazione di un nostro programma realizzato in VB6&amp;nbsp;desse dei 
problemi su alcuni computer con windows XP.
2 spiegazioni: Una classe 
"Creator" ha un metodo che instanzia un'altra classe "Classe" (cosa non si 
faceva prima di avere i costruttori parametrici!).
Qualcosa come:
Dim C as Object
Set C = 
CreateObject("CreatorLib.Creator")
Dim IC as 
LibInterfacce.IClasse
Set IC =   C.CreaClasse(ParamaLong, 
ParamADODBConnection, ParamDefinitoInLibInterfacce)
&amp;nbsp;
Se Creator viene creata in late 
binding (sì, purtroppo dobbiamo!) abbiamo:
Errore n° 13 Tipo non 
corrispondente
Se viene creata con early 
binding:
Errore n°&amp;nbsp;5 Chiamata di 
routine o argomento non valido
Per mesi ho dato la colpa al 
versioning della nostra DLL contenente le interfacce che fanno collaborare le 
varie parti di tale&amp;nbsp;programma, visto che in precedenza ci aveva fatto 
sputare sangue ad ogni nuova versione. Oggi ho scoperto che mi sbagliavo!
La chiamata accetta 3 parametri: 
un long, una ADODB.Connection, ed una classe definita nella libreria delle 
interfacce (come sopra).
In realtà si tratta della 
versione di ADO!
Come l'ho scoperto? Chiamando 
C.CreaClasse senza assegnare il risultato ad alcuna variabile.
Tutti i miei progetti usavano ADO 
2.6
e sulla macchina c'erano 
installati ADO 2.6, 2.7 e 2.8
Guardando sul mio computer di 
sviluppo ho visto che ho anche un ADO 2.80
Ho scaricato l'ultima versione di 
ADO ed installata sul PC del cliente... E, come nelle favole, vissero felici e 
contenti con il programma funzionante fino al prossimo INFERNALE problema di DLL 
COM!
&amp;nbsp;




    




&lt;img src="http://blogs.ugidotnet.org/dotnet4ever/aggbug/5743.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotnet4ever/archive/2004/11/18/5743.aspx</guid>
            <pubDate>Thu, 18 Nov 2004 17:35:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotnet4ever/archive/2004/11/18/5743.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotnet4ever/comments/commentRss/5743.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotnet4ever/services/trackbacks/5743.aspx</trackback:ping>
        </item>
    </channel>
</rss>