Newsgroup: it.comp.lang.visual-basic
Titolo: tipo restituito da un metodo di una mia classe

salve a tutti
ho un tipo definito in un modulo:
Public Type LaMagicaStrutturaIni
 IlPath As String
End Type
(a cui aggiungero altri campi)
ho una classe con un metodo che dovrebbe restituire proprio questo tipo
da me definito
ma il vb6 non è d'accordo e mi dice che solo i tipi pubblici possono
essere restituiti all'interno della classe. io vorrei rispondergli
'perche cosa c'è scritto d'avanti a Type ?'
ma non so come dirglielo.
qualcuno mi da un suggerimento?
grazie ciao
Valerio

 qualcuno mi da un suggerimento?
Salva, chiudi VB e ricarica il progetto... dovrebbe funzionare...

 Salva, chiudi VB e ricarica il progetto... dovrebbe funzionare...
  ho anche riavviato ma niente
che fare?

 ma non so come dirglielo.
[SNIP]
Se leggi bene il messaggio, peraltro un po' criptico, parla di tipi pubblici
*definiti in un modulo di classe pubblico* e non in un modulo... sposta la
dichiarazione nella classe stessa, purche' sia pubblica, e vedrai che non
solo funziona (ma potresti trovare qualche limitazione piu' avanti) ma e'
anche utilizzabile per dichiarare variabili altrove, senza dover creare un
istanza di classe.
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 Ciao
ciao

 ha scritto nel messaggio
news:3CD11436...@hotmail.com...

Scusa se insisto, ma il messaggio dice di piu', e nel "di piu'" c'e' anche
la spiegazione...
come ti accennavo sopra ci sono alcune condizioni da rispettare: tipo
pubblico,  definizione di tipo inclusa nella classe e classe pubblica.
sulla prima ci siamo, e' sufficiente "Public Type...".
sulla seconda direi pure, basta un cut & paste nella sezione General della
classe.
la terza non la vedi direttamente da codice, ma dipende dal tipo di progetto
e dalle impostazioni della classe definite in design, nella finestra delle
proprieta'.
In particolare occorre che la proprieta' Instancing della classe sia
impostata a qualunque cosa, tranne che 'Private' (dipende dall'uso che ne
devi fare); questo implicitamente ti indica un ulteriore restrizione: se la
classe appartiene ad un progetto "Exe Standard", la cosa *non puo' essere
fatta*, dato che tutte le classi nei programmi di questo tipo sono
forzatamente e invariabilmente private. Dato invece un progetto di tipo EXE
ActiveX o DLL ActiveX, e' sufficiente per esempio impostare Instancing =
PublicNotCreatable perche' il seguente codice funzioni:
Public Type TTest
    a As Integer
    b As String
End Type
Public Function Test() As TTest
Dim t As TTest
t.a = 1
t.b = "Test"
Test = t
End Function
se il tuo progetto e' gia' del tipo suddetto, e' sufficiente impostare
correttamente la classe, altrimenti temo tu debba ripensare il tipo di
approccio; in linea di massima, gli unici due vantaggi pratici nell'usare un
tipo piuttosto che una classe sono il poter effettuare la copia di un blocco
strutturato di dati con un unica assegnazione (facilmente implementabile) ma
soprattutto la lettura di record da file binari... ora, se non hai bisogno
specificamente di quest'ultima cosa, sarebbe estremamente piu' comodo se
anche il tipo con cui lavori fosse trasformato in una semplice classe


grazie 1000