Newsgroup: it.comp.lang.visual-basic
Titolo: Programma modulare

Per sfizio vorrei provare a dividere un programma in tante DLL a seconda
della funzione (amministrazione, produzione, ecc.). Ogni DLL deve contenere
tutto il codice (form e istruzioni) che serveno al reparto a cui il
programma si riferisce.
Fin qui nessun problema.
Ma se io non voglio distribuire tutte le DLL, ed alcune le voglio cedere
separatamente solo su richiesta, come devo inizializzarle nel programma
principale? Se lo faccio all'avvio e poi la DLL non si trova nel sistema si
blocca tutto. Ho provato a cercare su google e ho trovato qualcuno che già
usa questo sistema di programmazione e che riesce a individuare quali sono
installate e quali no, ma purtroppo non viene menzionato il codice che
esegue questo controllo.
Mi potete aiutare? Grazie 1000
    Roby

[*IL ROBY* = car...@TOGLIadriacom.it in
news:j7tAb.166908$
hV.61...@news2.tin.it
] ha scritto:

Non ho provato e, francamente, ho qualche dubbio, comunque:
Certamente la compilazione non passa se una DLL è citata (tramite un suo
elemento), ma la DLL stessa non è fra i riferimenti del progetto. Quindi è
necessario mettere fra i riferimenti _tutte_ le DLL, al solo fine di
compilare l'EXE senza errori.
In fase di esecuzione il controllo viene fatto solo se si "richiama" una DLL
tramite l'utilizzo di un suo elemento. In tal caso la DLL deve essere
presente e correttamente registrata, viceversa si otterrà un errore.
Ti consiglierei di "parametrizzare" l'installazione, ovvero salvare e
recuperare informazioni che ti consentano di sapere quali sono le
funzionalità previste per la specifica installazione. Se il modulo X non è
previsto (e presumibilmente la DLL relativa non è installata/registrata) ti
basta, con opportuni test, non chiamare _mai_ alcun elemento della DLL
stessa.

Invece di referenziare le dll con l'early binding, quindi progetto
riferimenti e dll ... le utilizzi con la createobject ....
A quel punto il tuo compilato non sà nulla di quanti e quali dll
ci sono. Tantomeno della compatibilità binaria (forse l'unico
aspetto quasi positivo della faccenda).
Distribuisci quello che vuoi, a chi vuoi. Quando lanci una funzione
tenti di caricare la dll ... se c'è vai avanti, se non c'è un bel
messaggino di errore " Ue 'tenzione che sta cosa 'n zi può fare ".
Se cerchi esempi su vb2themax, in particolare di balena, sulle
dll satellite per la lingua, riadattando il principio avrai quello
che ti occorre.
Ciao
Andrea

"IL ROBY" <car...@TOGLIadriacom.it> ha scritto nel messaggio
news:j7tAb.166908$hV.61...@news2.tin.it...

Con 
VB.NET
 non hai necessità di registrare le dll,
quindi basta copiarle nella cartella contenitore del file.exe
Ave
giuseppeD

 Mi potete aiutare? Grazie 1000
Io avevo fatto una cosa di questo tipo:
ho creato un progetto principale che funge da contenitore e che si occupa
degli accessi, connessioni ecc.
poi ho creato una dll per ogni funzionalità (come vorresti fare tu).
Le dll vengono posizionate tutte in una cartella definita all'installazione.
Il programma principale, all'avvio controlla le dll presenti e le istanzia
con la CreateObject. Ogni dll ha al suo interno una funzione che provvede a
creare la propria voce di menù sul form principale. In questo modo è
sufficiente mettere/togliere le dll dalla cartella per
abilitare/disabilitare le funzioni del software.
ciaociao

 ha scritto nel messaggio
news:br45d3$27vdm4$1...@ID-193795.news.uni-berlin.de...

molto interessante... è chiederti troppo un pezzetto di codice e/o un
esempio pratico?
Grazie comunque!
    Roby

 Grazie comunque!
nulla
ciaociao

 il codice un po' piů nello specifico
Il principio di funzionamento mi č chiaro, ma non sono molto pratico su come
istanziare le dll con createObject e su come rendere pubbliche le varie
schermate contenute nelle dll stesse. Praticamente su come ricercare la
presenza fisica su disco delle dll penso di arrivarci, ma come faccio nel
form principale a instanziare come pubblica una determinata funzione delle
dll presenti in modo che possano essere utilizzate in tutto il progetto e da
tutte le dll?
Lo so forse non sono stato molto chiaro, ma non sono poi molto afferrato di
questo genere di programmazione!
Il pezzetto di codice che ti chiedevo era proprio questo... come istanziare
dopo aver rilevato la presenza.
Grazie per la pazienza

 Grazie per la pazienza
di nulla
ciaociao

 [...]
Fantastico! comincio subito a fare delle prove!
Ciao
    Roby