Newsgroup: it.comp.lang.visual-basic
Titolo: Creazione di Dll con VB6

Seguendo i suggerimenti di un articolo di Antonio Giuliana che descriveva 
come modificare il linker di vb per ottenere che il compilatore creasse 
delle DLL
stile "C" ovvero liberamente utilizzabili come delle normali API ho 
realizzato poche righe di codice per tentare di trasformare in dll alcune 
porzioni di un applicativo che vengono chiamate  in diverse copie e che 
attualmente lo appesantiscono in termini di uso di memoria.
L'idea è quella di creare per ogni chiamata alla DLL un'istanza della form 
che sucessivamente possa essere chiusa con una chiamata al metodo di 
chiusura.
Posso immaginare che creando un exe activex il tutto possa funzionare ma la 
tentazione creando una normale dll è quella di utilizzarla anche in altri 
linguaggi
Il problema secondo me è che sbaglio nel caricamento della form
Grazie in anticipo a tutti e buon lavoro
Tullio1248
il codice dei due progetti è questo
progetto della DLL nome del progetto Progetto1 che è una dll Activex ma il 
linker modifica gli switch verso il compilatore per fargli creare una 
normale dll
Modulo bas nome: SymExp
Option Explicit
Public pnRigheIniziali As Integer 'numero di linee relative ai parametri del 
grafico
Public psNomeFile As String 'nome del file grafico
Public psTipo As String 'tipologia del grafico: "Ph", "Rx", "Uf", "" 
(datalogger)
'Public f As Form
Dim f As Form
Private Sub Main()
End Sub
Public Function ApriGrafico(ByVal pNomeFile As String, ByVal pRighe As 
Integer, _
ByVal pTipo As String) As Long
Set f = Form1
Form1.Label1.Caption = pNomeFile
Call f.Form_Load
ApriGrafico = 0
End Function
Public Function ChiudiGrafico() As Long
'chiusura del grafico
Unload Form1
ChiudiGrafico = 0
End Function
Public Function dis1(Valore As Double, colore As Long) As Long
dis1 = 0
End Function
Modulo di classe Cduimmy.cls
che è vuoto
Form1 che è una form con una label (Label1)
e non ha codice
Il file Progetto1.def così composto:
LIBRARY Progetto1
DESCRIPTION "Libreria"
EXPORTS
ApriGrafico = ?ApriGrafico@SymExp@@AAGXXZ
ChiudiGrafico = ?ChiudiGrafico@SymExp@@AAGXXZ
dis1 = ?dis1@SymExp@@AAGXXZ
Dopo la compilazione la dll viene copiata in c:\windows\system
Progetto che chiama la DLL
Nome del Progetto DllTest compilato come normale .exe
contiene un Modulo .bas che si chiama
ModMain.bas
Option Explicit
Public Declare Function ApriGrafico Lib "Progetto1.DLL" _
(ByVal NomeFile As String, ByVal Righe As Integer, _
ByVal Tipo As String) As Long
Public Declare Function ChiudiGrafico Lib "Progetto1.DLL" () As Long
Public Sub Main()
End Sub
ed una form che si chiama Form1
Option Explicit
Private Sub Check1_Click()
Dim sNome As String
Dim nRighe As Integer
Dim sTipo As String
Dim a As Long
If Me.Check1.Value = vbChecked Then
sNome = "c:\iddn\Datalogger\log\pH Ox Cianuri\pH Ox Cianuri_29_06_04.gra"
nRighe = 15
sTipo = ""
a = ApriGrafico(sNome, nRighe, sTipo)
Else
a = ChiudiGrafico
End If
End Sub
il Programma viene lanciato come exe che si blocca con una finestra che dice 
:
Questo programma ha eseguito una operazione non valida......
Grazie in anticipo per il supporto
EG

 news:v%lbd.4805$1q2....@tornado.fastwebnet.it...



Se vai in fondo all'articolo hai la possibilità di inviare una mail
con richieste chiarimenti/suggerimenti/segnalazioni rispetto articolo
stesso.
=======================================================================
Se mi vuoi scrivere togli le maiuscole
Sveltolampo 
cteniza...@hotmail.com
=======================================================================

 ha scritto nel messaggio 
news:7mism0to2oc2vpdug...@4ax.com...
