Newsgroup: it.comp.lang.visual-basic
Titolo: [!] Altra cosa divertente del VB6

Un programma fatto con il VB5 aveva una matrice dimensionata a 13 elementi
(forse faceva parte di un programma per il totocalcio??) :))
L'avevo dimensionata cosi' 
Dim matrice(13) as byte
Non avendo impostato option base (e per default =0) usavo gli elementi
della matrice da 0 a 12 (ovviamente). Infatti il suo Lbound(matrice)=0 e il
suo Ubound(matrice)=12. E fin qui il tutto funzionava.. :)
Beh.. in VB6, la stessa matrice (dello stesso programma) dimensionata allo
stesso modo ha 14 elementi e non 13, in quanto il suo Lbound(matrice)= 0 e
Ubound(matrice)=13. :-)
Saro' anche un somaro.. ma ho impiegato UN ORA prima di rendermi conto che
il programma scriveva e leggeva i dati sbagliati perche' scaricava nel file
14 byte
invece di 13!!! >:-(
C'e' un motivo per questa diversitą rispetto al VB5??
Vi risulta?
(rispondete almeno a questo msg.. non fate come con gli altri miei msgs,
neh!) ;-)
-- 
Ciao da MioMao!
---------------------------------------------------
+++++  Visita la mia CasaPagina! +++++
++++ 
http://www.digibank.it/miomao
 ++++

MioMao,
    Option base diverso ?
ciao,
Alessandro Scardova
scar...@tin.it
http://space.tin.it/computer/ascardov/

     Option base diverso ?
Cosa intendi? Che mi basta modificare l'option base? E cosa cambia?? :-)
Per entrambi vale 0 .. per entrambi il primo elemento è 0.. solo che una
matrice ha 13 elementi.. e l'altra 14!  Quindi.....?
-- 
Ciao da MioMao!

Ubound(matrice)=13. :-)
E' cosi' anche in VB5. La cosa puo' trarre facilmente in inganno, come
ho gia' sottolineato in un mio precedente post, ma e' perfettamente in
linea con la definizione:
[lower To] upper
in cui l'indice inferiore e' facoltativo e, se non presente, dipende
dall'impostazione Option Base. Quindi se Option Base e' 0 dire
Dim matrice(13) As Byte
e' equivalente a dire
Dim matrice(0 To 13) As Byte
che definisce un array di 14 elementi. Come dicevo, la cosa trae
facilmente in inganno, tanto che ci sono diversi esempi di strutture
nell'ApiLoader piu' grandi di quanto dovrebbero essere conservando
l'impostazione di default di Option Base.
Puoi trovare errori di questo tipo anche nell'help: cerca l'esempio di
AddressOf.
Ciao
Gian Michele Bertoni
--
Home Page: 
http://space.tin.it/computer/gbertoni/

MioMao ha scritto nel messaggio <01be39bb$8adf2520$0100007f@katiariva>...

Io ho programmato VB3/4/5 e da sempre di default se faccio
    dim pippo(13)
ci sono 14 lementi 0..13
Poi cosa torna UBound() non so, non lo uso mai, per i famosi errori da
trappare (in caso di vettore vuoto).
Ciao
By -MES-   Maronese Ettore
http://ilmes.freeweb.org
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://members.xoom.com/it_lang_vb

Normalmente una matrice(13) ha 14 elementi.
Se pero' si imposta option base 1 la matrice avra' 13 elementi.
se non ricordo male in VB5 o VB4 c'era la possibilita' di impostare un
option base di default, senza che venisse specificato nel codice.
non credo che questa oscena possibilita' sia stata mantenuta in VB6.



Si vede che non conosci ancora molto bene la M$! :-)

Mah... per l'amore del cielo.... io vi credo! :-))))
Solo che quel programma su VB5 scriveva record da 13 byte.. e con VB6 ne
scrive da 14 byte.  Eppure il programma è assolutamente lo stesso (gli
stessi file di VB5 caricati con VB6). Boh...
Ad ogni modo, sistemarlo è semplicissimo.. solo che al momento del
"pasticcio".. mi ha preso alla sprovvista e sono "caduto dal pero" :-)
Un grazie a tutti voi :-)
