Newsgroup: it.comp.lang.visual-basic
Titolo: Funzione in tutti i programmi.

Se uno si crea una funzione e la mette in un modulo la può utilizzare in
qualunque punto del programma. Ma se io questa funzione la volessi usare in
tutti i programmi che farò come utilizzo le funzioni intrinseche in VB (es.
InStr, Len ecc.) posso fare in modo di inserire questa funzione magari
creando un qualcosa tipo dll, magari creando anche un piccolo file di help?
Spero di essere stato chiaro. Grazie
--
Claudio P.
ICQ: 39052657

Ciao Claudio.
Sě, č possibile, ma pčer non complicarti la vita puoi anche fare cosě:
metti tutte le tue sub e le funzioni che presumo verranno usate in diversi
programmi in un modulo che salvi in una cartella diversa dal progetto.
Poi lo inserisci in ognuno dei tuoi progetti. In questo modo lo
incrementerai via via che elabori i vari progetti e le
modifiche/implementazioni saranno valide per tutti i programmi.
E' una soluzione, ma non l'unica...
Buon lavoro.
Luc

 modifiche/implementazioni saranno valide per tutti i programmi.
E per complicartela :) .. ti fai una bella DLL Activex
Saluti

 modifiche/implementazioni saranno valide per tutti i programmi.
Faccio già cosi per alcune cose ma vorrei un qualcosa di più "definitivo" in
modo che creando un file da importare in Vb ci isa la funzione e se è
possibile anche un piccolo file di help. E' possibile?


> anche un piccolo file di help. E' possibile?
Per il file di Help puoi scaricarti un Help Editor:
http://volftp.mondadori.com/reframe.htm?http://volftp.mondadori.com/cgi/rice
rca?adv=1

 modifiche/implementazioni saranno valide per tutti i programmi.
No, questo è il modo sbagliato. Se devi modificare il codice comune rischi
di rendere le funzioni incompatibili con progetti esistenti. Inoltre, ogni
applicazione si porterà dietro codice compilato, occupando così molto più
spazio sia sui supporti che in ram. Infine, meno codice hai nei progetti,
meno devi faticare nel debug.
La tecnica migliore consiste nel fare una dll che mantenga la comptibilità
binaria (così eviti problemi almeno a livello di dichiarazione; chiaro che
poi devi fare in modo che ogni funzione pubblica non perda la sua natura
strada facendo: puoi solo farla crescere una dll). A questo comunque ci
arrivi facendo un po' di rodaggio con un normale bas che per un po' ti
porterai nel tuou progetto iniziale, in modo da testare le funzioni prima di
metterle in una dll e decidere di 'congelarla'.
Se vuoi che le funzioni siano come quelle del vb, devi creare nella dll una
classe gloabl multiuse e dichiarare le funzioni public in questo modulo.
Così potrai chiamare la tua funzione da qualsiasi prg senza dover istanziare
una copia della classe e senza dover usare la sintassi Classe.Funzione. Ti
dico anche che però io sconsiglio questa tecnica per almeno tre motivi: (a)
un'istanza globale implicita della classe viene creata al momento dell'avvio
stesso del prg (non puoi disabilitarla); (b) il debug è reso talvolta quasi
impossibile per problemi di automazione che si innescano con questo tipo di
dll; (c) una dll come questa presenta alcune lacune nella compatibilità
binaria. Detto questo, se davvero sei convinto, lo puoi fare.
--
rumpelstiltskin

Detto questo, se davvero sei convinto, lo puoi fare.
Non sono convinto per niente è per questo che chiedo ......mi era solo
balenata un'idea per riutilizzare codice senza taglia e copia.


 balenata un'idea per riutilizzare codice senza taglia e copia.
Ottima idea (non volevo _affatto_ scoraggiarti) ma ricorda che non è
indispensabile usare classi globalmultiuse. Il mio avvertimento era solo
relativo a questo. Naturalmente puoi creare dll con classi Multiuse (anziché
Globalmultiuse) con il solo inconveniente che dovresti creare un'istanza
della classe tutte le volte che devi chiamare una funzione, ma questo lo fai
anche con dao, ado, etc., quando dichiari i loro oggetti.
--
rumpelstiltskin

 anche con dao, ado, etc., quando dichiari i loro oggetti.
Credo che alla fine seguirň questo metodo .....anche se giusto per provare
lo farň anche nell'altro modo visto che non l'ho mai fatto.
Grazie dei consigli a tutti


 wrote in
message news:rf2s9.26554$
dj7.1...@tornado.fastwebnet.it

Ciao, 
prova così:
- crea una dll di tipo ActiveX
- aggiungi un modulo di classe ed impostalo come "Global multiuse"
- aggiungi un metodo
- Crea il progetto client, per esempio un EXE standard, aggiungi il
riferimento
alla dll (che magari dovresti anche compilare)
- A questo punto hai creato un oggetto statico ed implicito. I metodi
dell'oggetto
li potrai usare come delle normali funzioni interne a VB.
- Quando avrai nuove funzioni inseriscile nella classe
Ciao Daniele
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG