Newsgroup: it.comp.lang.visual-basic
Titolo: Parola chiave New

Buongiorno a tutti......ho un po di confusione sull'uso della parola chiave
'NEW', vediamo di spiegarvi il mio problema :
Quando io devo creare una nuova istanza alla classe uso 'NEW' giusto? Però
se io scrivo :
---- dim dbase as database
---- set dbase = createdatabase("c:\miodb.mdb")
funziona ugualmente o sbaglio la sintassi è giusta ?
Ecco per il momento vi chiedo: in questo caso come andrebbe scritta questa
serie di istruzioni.Se per caso avete anche qualche altro esempio vi
ringrazio in anticipatamente......
Grazie a tutti Andrea

 funziona ugualmente o sbaglio la sintassi è giusta ?
La sintassi e' giusta; semplicemente in questo caso non crei direttamente una
nuova istanza della classe, ma ti fai restituire un'istanza valida e
"pretrattata" dalla funzione CreateDatabase, che e' definita cosi':
Function CreateDatabase(Name As String, Locale As String, [Option]) As Database
e quindi ritorna un tipo di dato coerente con la tua dichiarazione.
Inoltre nel caso particolare della classe Database la sintassi New non puo'
essere usata, visto che la classe e' definita come 'PublicNotCreatable'; questo
vuol dire che nessuna applicazione esterna alla libreria dove e' definita (DAO)
puo' creare una nuova istanza di tale classe, ma puo' al massimo ottenerne una
attraverso i metodi esposti dalla stessa libreria (CreateDatabase, OpenDatabase
ecc...)
Ciao
--
Luca Dormio
luca....@tin.it

Ok fino a qui è tutto chiaro ma come faccio  sapere con quale classe devo
usare  'New' dove reperisco le informazioni che tu hai scritto?
Grazie .... Andrea
"Luca Dormio" <lucaFAV...@tinFAVA.it> ha scritto nel messaggio
news:9etrls$oe1$1...@fe1.cs.interbusiness.it...


 usare  'New' dove reperisco le informazioni che tu hai scritto?
[SNIP]
Se si tratta di classi scritte da te, funziona in questo modo:
All'interno del progetto dove hai definito la classe puoi sempre usare New.
Se il progetto e' un Exe/Dll ActiveX, i programmi *esterni* che sfruttano le sue
classi sono vincolati a come hai impostato la proprieta' 'Instancing' delle
suddette
- 'Private' = non possono usare la classe in questione
- 'PublicNotCreatable' = non possono creare una nuova istanza con 'New' ma
possono manipolare istanze create per loro da altri metodi/funzioni (il caso del
CreateDatabase)
- Tutti gli altri valori = possono creare istanze con 'New', le differenze in
questo caso stanno altrove.
Se invece stai usando classi fornite da librerie esterne allora dovresti
consultare la documentazione relativa, in genere viene illustrata una gerarchia
degli oggetti che spiega come trattare le varie classi; per il DAO, per esempio,
puoi aprire MSDN e cercare 'Oggetti DAO - Panoramica', quindi seleziona 'Vedere
anche' e dal menu' 'Modello DAO per le aree di lavoro di Microsoft Jet'.
Sapere esattamente quali sono creabili e quali no a volte non e' immediatamente
chiaro ma lo puoi ricavare leggendo le pagine relative all'oggetto che ti
interessa; un trucco "quick & dirty" e' quello di scrivere in qualunque parte
del codice
Dim x As New <spazio>
e a questo punto il menu' di IntelliSense ti mostra l'elenco di tutte le classi
creabili nel tuo progetto, se vuoi essere piu' specifico ancora puoi scrivere
Dim x As New DAO.
e stavolta l'elenco sara' ristretto solo alle classi creabili del DAO.
