Newsgroup: it.comp.lang.visual-basic
Titolo: Compilazioni differenti. AIUTOOOOOOOOOO!?!?!?!!!!

Ciao a tutti,
ho realizzato un programma per la configurazione di un prodotto via seriale, 
il software mediante un setup può essere configurato in varie lingue.
Il mio problema sorge nel fatto che alcuni clienti ci hanno chiesto delle 
personalizzazzioni con loghi e scritte varie, in questo modo mi ritroverei 
svariati programmi uguali che differiscono solo in piccoli particolari ed 
eventuli modifiche dovri apportalre su tutti i programmi.
Volevo quindi chiederVi se c'è la possibilità di avere un programma 
principale ed in fase di compilazione mediante degli indici far compilare il 
progetto con determiati loghi e con altri indici compilarlo con altri loghi.
Grazie per gli eventuli suggerimenti. 

 progetto con determiati loghi e con altri indici compilarlo con altri loghi.
Potresti pensare di utilizzare dei file di risorse differenti per 
esempio...
-- 
The generation of random numbers is too important to be left to chance.
News 2000 [v 2.06] - 
http://www.akapulce.net/socket2000


Memorizza i loghi e le stringhe in file di risorse *esterni*, ossia compilati
come DLL "resource-only" a partire da un "resource script".
Normalmente questo è uno dei metodi per internazionalizzare un programma
(facendo versioni in lingue diverse della stessa DLL), ma lo stesso principio si
può adottare per "customizzare" l'interfaccia utente di un prg.
In tal modo l'EXE distribuito è sempre lo stesso e non necessita più di
manutenzione, mentre per differenziare i diversi clienti finali occorre solo
installare la DLL customizzata.
My 2 cents
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

Innanzitutto grazie per i consigli a entrambi,
ora perň ho un altro problema, nel senso che provando su un pc ok tutto 
funziona nel senso che ho attivato Editor risorse VB6 da Gestione aggiunte 
ed ho quindi realizzato il file.res.
In un altro pc dove devo effettivamente modificare il programma non c'č la 
voce editor risorse VB6 nel menu gestione aggiunte nonostante siano entrambi 
pc con VB6 ed SP6, ho anche controllato sul pc dove non trovo editor...... 
ed il file RESEDIT.DLL c'č.
Come fare quindi per farlo comparire in gestione aggiunte.
Grazie ancora per gli eventuali suggerimenti

 Grazie ancora per gli eventuali suggerimenti
Figurati
Bye


"Rafunk" <rafun...@NOTHANKSlibero.it> ha scritto nel messaggio
news:e78qdk$pi0$1...@alix.livenet.it...

Perfetto ha funzionato!! Sei grande!!!!
Ok, per fare il file res ho capito, ma per fare la DLL come dici tu come
faccio e dove troverei le istruzioni per inserirci la immagini e testo e poi
per rileggerle?
Ciao

 Ciao
Allora, il discorso è un po' lunghetto... secondo me vale la pena, poi vedi tu
se effettivamente è così.
1) Hai 2 modi per creare i file .RES:
a. Quello solito: continui ad usare il VB Resource Editor per creare i file
.RES. Personalmente lo trovo po' scomodo dato che non ne puoi avere più di uno
per progetto...
b. (Meglio) Crei un file .RC (Resource Script) contenente le tue risorse in
formato "testuale" e lo trasformi in .RES utilizzando il compilatore a linea di
comando RC.EXE che trovi in C:\Programmi\Microsoft Visual
Studio\Common\Tools\Resource.
Hai il vantaggio che il file RC non è binario, ma è appunto un file di testo
editabile con notepad, ad esempio.
http://www.vbaccelerator.com/home/vb/code/Libraries/Resources/Using_RC_EXE/article.asp
2) Dopo aver ottenuto il file .RES, per trasformarlo in .DLL occorre invocare il
linker di VB con i seguenti parametri:
C:\Programmi\Microsoft Visual Studio\VB98\LINK.exe /verbose /noentry /dll
/out:<nome della DLL>.dll <file .RES>
(Puoi sempre creare un .BAT che si occupi di richiamare RC.EXE e LINK.EXE in
sequenza)
3) Infine, per caricare le risorse dalla DLL esterna, usi le API LoadLibrary,
LoadString, LoadBitmap, LoadIcon...
Fai riferimento a questi articoli:
http://support.microsoft.com/kb/194409
http://www.thevbzone.com/l_res.htm
http://www.thevbzone.com/l_res.htm#USING%20RESOURCES%20LOCATED%20IN%20AN%20EXTERNAL%20DLL%20FILE
Spero di non aver dimenticato qualcosa...


 1) Hai 2 modi per creare i file .RES:
Senza perdersi in .bat, .res, .rc e affini:
Crei un progetto di tipo DLL ActiveX con una classe pubblica che esporta 
metodi di tipo IPictureDisp per le immagini e String per i testi.
All'interno del progetto può metterci una ImageList e con un solo
Public Function GetImage(Key As String) As IPictureDisp
    Set GetImage = ImageList1.Images(Key)
End Function
hai tutto quello che ti serve per le immagini, per i testi la strada è la 
stessa.
Compili ad es. come RisorseClienteXYZ.dll dove XYZ è il codice del cliente 
interessato.
Distribuisci la dll insieme al tuo progetto, e dall'exe fai semplicemente
Dim res As Object
Set res = CreateObject("RisorseClienteXYZ.MiaClasse")
...
Set Picture1.Picture = res.GetImage("Logo")
...
Se vuoi fare proprio le cose fatte bene fai implementare a MiaClasse 
un'interfaccia in modo da avere l'intellisense e l'early binding:
Dim res As MiaInterfaccia
Set res = CreateObject("RisorseClienteXYZ.MiaClasse")
Tempo totale per realizzare il tutto inferiore ai 15 minuti e usando 
strumenti già noti (VB6 liscio).
Ciao 

 Ciao
In conclusione: meglio imparare qualche strumentino "extra-VB" in più.
Naturalmente sempre tutto molto IMHO, eh!
Ciao



E' sempre meglio conoscere strumenti in più (come si dice, è tutto grasso 
che cola).
In questo caso credo che il sistema dei file res faccia solo impazzire nel 
mantenere insieme tutta la struttura.
Ricordiamoci che ogni {strumento | passaggio da eseguire o ricordare | file 
| ecc} in più è un potenziale problema in futuro.
Ciao 

 Ciao


rcdll RisorseClienteA.rc
Questo č un ottimo sistema.
Anche sul sito comune c'č un esempio per fare le DLL standard di risorse di
Corrado Cavalli
http://www.it-lang-vb.net/archivio.asp?pag=2&info=yes
Io mi sono ispirato a quello per fare le mie DLL, ma il tuo modo mi sembra piů
semplice, potresti farne un articolo da aggiungere sul sito comune.
--
ciao
  Stefano

GRAZIE 1000 a tutti per i suggerimenti.
Oggi provo le varie soluzioni, ma avrei ancora una domandina per Rafunk:
dicevi di creare un file .RC(Resource Script), ma come lo creo e dove la
trovo l'utility?
Ciao


Lo crei col notepad ;-) !
Nel primo dei link che ho postato dovrebbe essere illustrata la sintassi.
http://vbaccelerator.com/article.asp?id=11996
Inoltre trovi altre risorse qui:
http://msdn.microsoft.com/library/en-us/tools/tools/about_resource_files.asp
Comunque, brevemente:
- per incorporare una bitmap, basta che il file RC contenga una linea così:
<Identificativo> BITMAP "<nomefile>"
- per incorporare un file qualunque (es. JPG, AVI, MP3...)
<Identificativo> CUSTOM "<nomefile>"
Ove <nomefile> è il percorso (assoluto o relativo) del file BMP. Tieni presente
che i backslash vanno raddoppiati, es. "c:\\MyImages\\Logo.bmp"
- per definire delle stringhe (stringtables) la sintassi è
STRINGTABLE
BEGIN
    <id1>, <stringa1>
    <id2>, <stringa2>
    ...
END
<id> è un identificativo numerico che deve essere univoco in tutto il file
<stringa> è la stringa, tra virgolette. Nota che supporta i caratteri di escape
(es: \n = vbNewLine, \t = vbTab etc. \0x87 = Chr(&H87) etc...)
Per compilarlo, RC.EXE (Resource Compiler) si trova nella cartella Wizards di
Visual Basic 6
("C:\Programmi\Microsoft Visual Studio\VB98\Wizards")
Altro link con un tutorial abbastanza completo:
http://vbaccelerator.com/article.asp?id=2522
Ti consiglio di provare il codice di esempio che puoi scaricare dai link nelle
pagine degli articoli.
Bye



La tua proposta mi lusinga :-) ... mi piacerebbe, appena ho un po' di tempo
provo a buttar giů qualcosa, ma non garantisco...


 semplice, potresti farne un articolo da aggiungere sul sito comune.
Girovagando ho trovato questi due articolini..(che forse conoscete già)
ma li reputo abbastanza interessanti!!
http://www.vb-helper.com/howto_make_standard_dll.html
http://www.windowsdevcenter.com/pub/a/windows/2005/04/26/create_dll.html
-- 
Tnx a lot!
Daniele.
Free As In Freedom
www.fsf.org


http://www.windowsdevcenter.com/pub/a/windows/2005/04/26/create_dll.html
Sono interessanti, ma si riferiscono a DLL di funzioni, mentre la genialata è
l'idea di fare una DLL di risorse standard che quindi non ha bisogno di essere
registrata, usando solo un file di script per aggiungere le risorse e un .bat
per compilarla.
Alla prima occasione sperimenterò il metodo.
--
ciao
  Stefano

 Sono interessanti, ma si riferiscono a DLL di funzioni
Si si..bè certo, l'ho postato qui perché si parlava di DLL standard!! ;)


 ;)
Lo immaginavo... Comunque avevo trovato già altre informazioni a proposito ma
mai un articolo così ben fatto come il secondo. Ottimo post!
