Autore Topic: far partire indice array da 1  (Letto 3610 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
far partire indice array da 1
« il: 08 Febbraio 2013, 23:17:11 »
esiste in Gambas l'opzione "option base" di Visual basic che permette di far partire l'indice di un array da 1 piuttosto che da 0?

grazie
"e il naufragar m'è dolce in questo mar"

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #1 il: 08 Febbraio 2013, 23:43:29 »
esiste in Gambas l'opzione "option base" di Visual basic che permette di far partire l'indice di un array da 1 piuttosto che da 0?

Mai sentita.
 Effettivamente farebbe comodo. A volte infatti capita di dovere eseguire comandi su sottostringhe e correlativamente su array. Capita allora che l'indice "i" debba essere valorizzato a partire da 1 per eseguire "mid($stringa, x,2)" mentre l'array deve essere induividuato con $array[x-1].
 :ciao:
:ciao:

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #2 il: 08 Febbraio 2013, 23:59:39 »
Nel VB era pure possibile stabilire gli indici di partenza e arrivo, tipo:

DIM array(5 TO 20) AS STRING

Anche questa era una cosa molto comoda. In effetti sono cose che mi sono un po' mancate nel passaggio a Gambas. Sarebbe bello riaverle.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #3 il: 09 Febbraio 2013, 00:30:31 »
è molto comoda poichè spesso ci si incasina non poco tra array che partono da o e quelli che partono da 1, soprattutto se sono dinamici.
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #4 il: 09 Febbraio 2013, 00:43:55 »
Nel VB era pure possibile stabilire gli indici di partenza e arrivo, tipo:

DIM array(5 TO 20) AS STRING


Comunque... basta un ciclo For:   :-\
Codice: gambas [Seleziona]

Dim a As New Byte[21]
Dim j As Byte

  For j = 5 To 20
    a.Add(j, j)
  Next
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #5 il: 09 Febbraio 2013, 11:30:04 »
Ma così restano degli elementi inutilizzati. Nel VB no.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #6 il: 09 Febbraio 2013, 12:36:32 »
a me sembra del tutto inutile.. far partire l' arrai da un indice che non sia 0 :)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #7 il: 09 Febbraio 2013, 13:51:01 »
Ma così restano degli elementi inutilizzati. Nel VB no.

E' vero, però io non riesco a capire come si possa "iniziare" ad assegnare valori, per esempio, dal 6° elemento senza lasciare inutilizzati i precedenti 5.  :-\

Inoltre, concordo con quanto affermato da fsurfing:
a me sembra del tutto inutile.. far partire l' arrai da un indice che non sia 0 :)
Infatti, le funzioni di Gambas proprie dell'array consentono una varietà di manovra e gestione dell'array (togli e metti in questo o in quell'indice dell'array, ed altro) che lo rendono sufficientemente versatile, duttile... malleabile.  ;D
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #8 il: 09 Febbraio 2013, 14:04:19 »
può essere utile quando per esempio si fa un array.count
è fastidioso mettere o togliere dall'indice un 1

e poi migliora a volte la comprensibilità del programma
 in questo opinione del tutto personale
"e il naufragar m'è dolce in questo mar"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #9 il: 09 Febbraio 2013, 14:45:04 »
Citazione
Inserisci citazione
può essere utile quando per esempio si fa un array.count
è fastidioso mettere o togliere dall'indice un 1

basta fare un array.max

Citazione
e poi migliora a volte la comprensibilità del programma
 in questo opinione del tutto personale
certamente è una cosa personale , a me non piacerebbe che fosse diverso , anche perchè poi si potrebbe generare confusione considerando che ogni oggetto utilizza quel tipo di indicizzazione

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #10 il: 09 Febbraio 2013, 16:09:55 »
a me sembra del tutto inutile.. far partire l' arrai da un indice che non sia 0 :)

Metti caso che l'indice di partenza sia calcolato. Mi è capitato di vedere pure questo. :)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #11 il: 09 Febbraio 2013, 16:23:08 »

Metti caso che l'indice di partenza sia calcolato. Mi è capitato di vedere pure questo. :)

Scusami, puoi fare un semplice esempio pratico ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #12 il: 09 Febbraio 2013, 16:40:15 »
Esempio banalissimo: devo caricare in un array dei dati che vanno dall'anno 1982 fino al 2008.
Sarà più pratico scrivere:

DIM dati(1982 TO 2008) AS variabilestrutturata
puntando direttamente all'anno desiderato, oppure:

Dim variabilestrutturata[26]
dovendo calcolare quale elemento usare tenendo conto dell'anno di partenza scalato poi lo zero?
E' solo un esempio semplicino, ma si può fare di meglio. :)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #13 il: 09 Febbraio 2013, 16:52:34 »
Esempio banalissimo: devo caricare in un array dei dati che vanno dall'anno 1982 fino al 2008.
Sarà più pratico scrivere:

DIM dati(1982 TO 2008) AS variabilestrutturata
puntando direttamente all'anno desiderato, oppure:

Dim variabilestrutturata[26]
dovendo calcolare quale elemento usare tenendo conto dell'anno di partenza scalato poi lo zero?
E' solo un esempio semplicino, ma si può fare di meglio. :)

In Gambas dovrebbe essere:
Codice: gambas [Seleziona]

Dim variabilestrutturata[27] As ...quel_che_è

dato che dal 1982 al 2008 sono 27 anni (tutti compresi).

Insomma, il VB ti fa il calcolo lui, in Gambas il calcolo te lo fai prima tu.

Ma potresti fare lo stesso con il ciclo FOR:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Dim variabilestrutturata As New Integer[]
  Dim j As Integer

    For j = 1982 To 2008
      variabilestrutturata. Add(j)
    Next

' Se andiamo a vedere la quantità di elementi caricati,
     Print variabilestrutturata.Count

' avremo il risultato di 27 !

End


Insomma, non mi sembra poi chissà quale grande problema, eh ?   :-\
« Ultima modifica: 09 Febbraio 2013, 16:54:57 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: far partire indice array da 1
« Risposta #14 il: 09 Febbraio 2013, 16:59:21 »
Ma gli indici effettivi vanno da 1982 a 2008 o da 0 a 26?

Edit: provato, la numerazione non viene memorizzata e parte sempre da 0.
« Ultima modifica: 09 Febbraio 2013, 17:03:17 da Top Fuel »
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.