Newsgroup: it.comp.lang.visual-basic
Titolo: Domanda : Lo stesso sorgente per tanti clienti, e tante personalizzazioni.

Vorrei sapere se qualcuno ha mai dovuto affrontare il problema di avere una
serie di clienti su cui è installato un vostro programma in Visual Basic.
Ognuno di questi clienti ha però alcune personalizzazioni specifiche, mentre
altre parti di programma sono "comuni" a tutti. Come fare per non dovere
separare i vari sorgenti cliente per cliente e apportare magari la stessa
modifica su ognuna delle versioni ??? Come poter avere delle versioni
"stratificate", con parti comuni e parti personalizzate di codice sorgente??

 "stratificate", con parti comuni e parti personalizzate di codice
sorgente??
Tutto ciň che vuoi fare tu č previsto tramite l'utilizzo di Visual
SourceSafe.
Guardati la documentazione per imparare ad usarlo. E' un po' difficilotto
da imparare ma dopo aver afferrato qualche concetto non ne potrai piů fare
a meno!
Ciao,
Alberto Favetta
Axi Applicazioni per l'Informatica S.n.c.
in...@axi-informatica.com
www.axi-informatica.com

 ha scritto nel messaggio
news:DHti6.14836$mD1.3...@news.infostrada.it...

Soluzione banale: EXE+DLL. Nella versione 'Standard' hai il codice base, e
nelle Personalizzazioni metti quello che vuoi.
Bye by Massimo 8-]
P.S. IMHO la soluzione piu' comoda e' avere un EXE ridotto ai minimi
termini, che chiama i metodi di una DLL personalizzata. Nella versione
'Standard' questa DLL fara' da tramite tra l'EXE e la DLL di base (una
specie di kernel), mentre nelle personalizzazioni intercettera' le chiamate
da modificare.

Visual Source Safe che permette di fare lo split di un progetto.
bye
Gianluca

 wrote in message
DHti6.14836$mD1.3...@news.infostrada.it...

Io, semplicemente, mano a mano che i clienti
chiedono le personalizzazioni, le metto sempre
come "configurazione".
La maschera di configurazione del programma ormai ha 50 voci
di configurazione, però ho un solo sorgente con circa 200 clienti.
Ciao
Sir Jo

Una possibilita' grezza e manuale e' quella di inserire il codice comune in
moduli, classi, form, ecc. che ogni progetto usera' (gli stessi file).
Il vantaggio e' che aggiorni un progetto e vengono modificati tutti, ma
questo e' anche uno svantaggio perche' se cambi una cosa (e diventa
incompatibile) utilizzata da un altro progetto devi stare molto attento a
verificare e sistemare tutti i progetti.
Salve
            Dbg
sviluppo.pc ha scritto nel messaggio ...


 da modificare.
L'argomento interessa molto anche a me, perņ sono passato al VB solo
recentemente e non ho ancora dimestichezza con la progettazione.
Non ho capito bene i passaggi.
Creo un exe di base che contiene gli elementi comuni e poi una dll che funga
da collegamento alle dll specifiche per cliente? Ma perchč ci vuole questa
dll di base?
Non capisco bene, puoi specificare meglio?
Grazie.
Carlo.

 Carlo.
Praticamente (IMHO)...
Creo una DLL di base (che chiamero' Kernel), con un'unica classe, che espone
tutte le funzionalita' del programma, le maschere, i moduli, gli UDT, ecc..
Ovviamente, in modalita' 'Binary compatibility', per poter esportare la
TypeLibrary (per intenderci, quando istanzio un oggetto di questa classe,
appena premo il punto mi appare la lista dei metodi usabili).
Indi creo una DLL (che chiamero' Person), che referenzia un oggetto di tipo
Kernel, e che contiene paro paro le dichiarazioni dei suoi metodi. Queste
dichiarazioni devono essere 'passanti', nel senso che non fanno altro che
richiamare i metodi omonimi del Kernel. Ad esempio, se nel Kernel ho una
funzione tipo
Public Sub kPincoPallo(...)
  ...
End Sub
, nel Person avro'
Public Sub pPincoPallo(...)
  call VariabilediTipoKernel.kPincoPallo(...)
End Sub
L'EXE istanzia una variabile di tipo Person, e fa uso SOLO dei suoi metodi.
Tra l'altro, l'EXE deve essere ridotto ai minimi termini. Idealmente,
potrebbe avere una struttura di questo tipo:
Sub Main()  <--Impostata come avvio
  Dim pVariabile as new Person  <--istanziazione della classe
  ' -----------------------------
  ' Corpo dell'EXE
  pVariabile.CaricaDatiIniziali
  pVariabile.VisualizzaMascheraPrincipale
  ' -----------------------------
  set pVariabile=Nothing   <----distruzione dell'istanza
End Sub
Quando devi personalizzare una funzione, non fai altro che scrivere il
codice nella Person, che sostituira' l'esecuzione della Kernel.
Spero di esserti tato di aiuto.
Bye by Massimo 8-]

 ha scritto nel messaggio
news:DHti6.14836$mD1.3...@news.infostrada.it...


 Spero di esserti tato di aiuto.
In effetti non c'ho capito niente e questo mi fa capire che di VB ne devo
ancora masticare parecchio...
A parte gli scherzi, ho compreso la strategia, che era quello che mi
interessava.
Poi per metterla in pratica ci vorrà qualche secolo, ma almeno ho qualcosa
su cui lavorare!
Grazie mille.
Carlo.

Cosa significa per te una "Configurazione", scusa l'ignoranza.....

Di norma è sufficente strutturare tutto in directory separate. Ad esempio:
\Common - contiene i moduli comuni
\cli1 - il vbp e i files personalizzati
\cli2 - il vbp e i files personalizzati
ecc..
ecc..
--
Fabio Guerrazzi
VB Developer
http://digilander.iol.it/WarZi/default.htm
fab...@libero.it