Newsgroup: it.comp.lang.visual-basic
Titolo: Arrai di stringhe in una classe

Salve
ho definito una classe Dominio in VB con delle proprietą semplici di tipo
string tipo NomeDominio ServerDns, ora vorrei aggiungergli una proprietą
Servers che altro non č che un array di stringhe.
Come posso fare? La creazione guidata non mi dą la possibiltą di inserire
proprietą di tipo array... Non vorrei aggiungergli una collezione perchč
questo vorrebbe dire creare una nuova classe server con una singola
proprietą e mi sembra esagerato...
qualche suggerimento?
--------------------------------
Inviato via 
http://usenet.libero.it

 proprietą e mi sembra esagerato...
Per quanto riguarda la collection, nota che possono contenere anche
variabili di tipo semplice, come le stringhe, non necessariamente oggetti.
In ogni caso, per usare un array devi semplicemente usare un membro
*privato* di tipo array e una coppia di property get/let pubbliche
indicizzate, ad esempio:
Private mServers() As String
Public Property Get Servers(ByVal Index As Integer) As String
'[...] qui puoi aggiungere i controlli del caso sui limiti ecc..
Servers = mServers(Index)
End Property
Public Property Get Servers(ByVal Index As Integer, ByVal sNewValue As
String)
'[...] vedi come sopra
mServers(Index) = sNewValue
End Property
Se ne hai bisogno puoi esporre anche i metodi necessari al ridimensionamento
e quant'altro ti serve
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 
Mi serve che questo array sia "dinamico" nel senso che devo poter 
aggiungere elementi a piacimento, posso usare Redim Preserve per fare ciň?
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~ KiavICQ:61810110 ~ KiavikHOO!:Kiavick ~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 aggiungere elementi a piacimento, posso usare Redim Preserve per fare ciò?
come dicevo in fondo al messaggio precedente
"[...] Se ne hai bisogno puoi esporre anche i metodi necessari al
ridimensionamento
e quant'altro ti serve"
Il concetto generale quindi e':
gli array in una classe sono *sempre* privati, e quindi non accessibili
direttamente dall'esterno; tutti i tipi di interazione devono essere esposti
dalla classe sotto forma di proprieta'/metodi pubblici creati "ad hoc"
Per il ridimensionamento, per esempio, puoi definire un metodo simile a
questo:
Public Sub AddServer(ByVal sNewServer As String)
Dim Index As Long
'[...] i controlli del caso
Index = UBound(mServers) + 1
Redim Preserve mServers(Index)
mServers(Index) = sNewServer
End Sub
Ancora meglio potresti fare usando ParamArray:
Public Sub AddServer(ParamArray Range())
Dim Index As Long, NewIndex As Long, I As Long
'[...] i controlli del caso
Index = UBound(mServers)
'ricalcoliamo il nuovo indice in base al numero
'di elementi passati come parametro
NewIndex = Index + (UBound(Range) + 1)
Redim Preserve mServers(NewIndex)
'aggiungiamo tutti i nuovi elementi, partendo dalla
'posizione originaria
For I = 0 To UBound(Range)
    mServers(Index + I + 1) = Range(I)
Next
End Sub
le chiamate a quest'ultimo metodo possono essere quindi indistintamente:
Dominio.AddServer("pippo")
Dominio.AddServer("pippo", "pluto", "paperino")
ecc.


 
OK grazie tutto molto chiaro!!
ciaoo
