Newsgroup: it.comp.lang.visual-basic
Titolo: User type

Ciao a tutti!!!
Ho un problema banale ma effettivamente non riesco a risolverlo.
Una volta, quando programmavo col Turbo Pascal, potevo definirmi un tipo di
utente a mio piacimento.
Es.
Creavo un tipo pippo così:
Type Pippo = array[0..2] of integer;
e quando dichiaravo la variabile:
var
    prova : pippo;
Prova risultava essere un array di 3 elementi.
quindi la utilizavo così:
Prova[1] := ...
Prova[2] := ...
Adesso programmando con il visual basic, voglio ottenere la stessa cosa.
pero quando dichiaro il mio tipo:
Type pippo
    p (0 to 2) as integer
end type
devo inserire un Record contenente un array, ma creare un tipo puramente
array non riesco.
L'utilizzo e il seg.:
dim prova as pippo
prova.p(1)=...
prova.p(2)=...
Non che sia un gran spreco di tempo battere un ".p" in più, però ...
... è possibile che non sia possibile creare un tipo array puro?
Qualcuno sa dirmi come si fa?
Very grazie a tutti!!
Maverick!

 ha scritto nel messaggio
news:8al12n$kcd$1...@lacerta.tiscalinet.it...


...


 ha scritto nel messaggio
news:8alg5o$4ci$1...@pegasus.tiscalinet.it...


array non riesco. Qualcuno sa dirmi come si fa?
Non puoi costruire tipi semplici ma solo tipi "RECORD".
effedipi ha ragione a non capire, perché usi termini Pascal,
che in VB non hanno senso.
Ti informo a margine che con VB puoi però costruire una sorta di
scalari, con la costruzione Enum.
Bye, mroghy


Un record in Pascal (e Delphi) č semplicemente un tipo definito dall'utente.
Una volta in pascal per dichiarare un array eri costretto a farti un tipo
che in pseudo VB suonerebbe come
    Type TMyArray(0 To 5) As Integer
    Dim MyArray As TMayArray
MyArray ora sarebbe un array di interi di 6 elementi.
Questo in VB non si puň fare e mi sembra sia una pratica caduta in disuso
anche in Pascal, poichč č macchinosa e non molto chiara.
Il massimo che Maverick puň fare č dichiararsi una costante cosě:
    Const MAX_ARRAY = 5
    Dim MyArray(0 To MAX_ARRAY) As Integer
In modo da essere sicuro che tutti gli array definiti con MAX_ARRAY siano
delle stesse dimensioni.
Ciao

Ok Mroghy,
allora mettiamo che io ho una lista di 100 coppie di codici come questi:
"kdjhfskjh" - "ksdjhfksjdh"
"kdjasdfd" - "kaharrgasdh"
"ksfdsdfg" - "ksd23421dh"
"krtgewrjh" - "ks423421jdh"
...
Io le voglio avere nel mio progetto sotto forma di un'unica costante array!
(sarebbe bello :
const Mycodici (1 to 100,1 to 2) as string = ...
Purtroppo il computer non mi lascia definire una costante array, allora
pensavo di dichiarare un tipo utente che fosse un array di questo tipo (1 to
100,1 to2) as string) e poi di creare una costante del mio nuovo tipo in
modo da non ottenere l'errore dal computer.
Sai percaso come fare?
Maverick
mroghy ha scritto nel messaggio ...


Sai percaso come fare?
Se usi VB6 questo si può fare, dichiarando un array, definirne il contenuto
e poi assegnarlo direttamente ad un'altro così:
Dim A1(1 To 100) As Integer
Dim A2() As Integer
A1(1) = 1
A1(2) = 2
...
A2() = A1()
Questa soluzione richiede però un po' di risorse.
In Alternativa puoi usare la CopyMemory()
Ciao

Maverick
Le uniche soluzioni che conosco sono:
- creare una variabile Public in un modulo e poi inizializzarla nel
corso della Sub Main, o nell'evento Form Load, se hai più Form; con
un'unica Form si fa tutto su di essa;
- creare una classe che contenga solo quelle variabili come Public, e
le inizializzi nel metodo Initialize della classe, così
l'inizializzazione è automatica non appena la istanzi.
Come vedi non c'è molta differenza, e secondo me il primo metodo è più
leggibile.
Bye, mroghy