Newsgroup: it.comp.lang.visual-basic
Titolo: [?VB6] CreateObject e WithEvents (LUNGO...)

Sto sviluppando una procedura che deve importare una serie di dati da alcuni
files esterni, questi files contengono lo stesso set di informazioni, ma
hanno tracciato record diverso tra loro.
Ho pensato di applicare una metodologia OO al problema, cosi' ho creato una
interfaccia generica con tutte le proprieta' ed i metodi necessari, ed un
evento che ho chiamato 'FineFile' per avvisare appunto dell'avvenuta fine
del file.
Ogni file di input viene da me rappresentato da una classe che implementa
questa classe generica, col codice appropriato per ogni tracciato record.
Ora, venendo al problema, nella mia applicazione principale non posso
referenziare direttamente i singoli oggetti FileInput, perche' non voglio
modificarla ogni volta che si presentera' un nuovo file di input (e si
presenteranno, questo e' sicuro), cosi' ho pensato di inserire in un file
esterno l'elenco dei possibili files di input, ciascuno associato al proprio
componente dll.
Sapendo il nome del file posso cosi' creare (con CreateObject) l'oggetto
relativo che mi fara' il suo lavoro....
Il problema sta nell'evento FineFile, in quanto cosi' facendo non posso
definire il mio oggetto (objInput) con la clausola WithEvents e non posso
quindi fare riferimento all'evento FineFile...
In conclusione, sapete se esiste un modo per riuscire ad intercettare un
evento anche da un oggetto definito 'as object' e quindi non tipizzato pur
sapendo che questo oggetto implementa una classe con proprieta' e metodi (ed
eventi...) ben definiti ???
Vi ringrazio intanto per avermi seguito fin qui e per ogni suggerimento
potrete darmi...
Ciao.
Lorenzo
p.s. : ovviamente posso anche evitare di usare l'evento FineFile, solo che
questo mi sembra il modo piu' elegante (ma forse impossibile...)

 wrote in message
news:967467693.25382@linuxintra...
[SNIP]





 ha scritto nel messaggio
news:967467693.25382@linuxintra...

Dal mio punto di vista la cosa piu semplice è quella di sfruttare
l'ereditarietà concessa da vb: costruisciti un'interfaccia comune
per tutte le classi relative ai vari file di input (questa interfaccia
conterrà tutte le proprietà comuni e ovviamente l'evento finefile);
implementa tale interfaccia nei tuoi componenti e poi dal programma
chiamante continui ad usare la create object ma associ il riferimento
restituito ad una variabile privata dichiarata withevents del tipo della tua
interfaccia. Questo ti consente di continuare a gestire anche le proprietà
specifiche dell'oggetto e di recuperare i tuoi eventi (ovviamente solo
quelli comuni a tutti gli oggetti). Se la tua logica è quella di creare
tante dll quanti sono i possibili file di input dovrai mettere l'interfaccia
su una dll a parte e referenziarla sia nel progetto chiamante sia nella dll.
Spero di esserti stato utile.
Ciao, Rick.

 p.s. : ovviamente posso anche evitare di usare l'evento
FineFile, solo che questo mi sembra il modo piu' elegante (ma
forse impossibile...)
Scusami tanto... ho letto e riletto ma... non ho capito
perche' FineFile debba essere un evento.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X

 exe ;-)
Alla fin fine, importare dati da files esterni ad un db e' una 'tassa' che
tutti i programmatori devono pagare...l'importante e' farsi rimborsare !!!
:-))
Ciao.
Lorenzo