Sono ancora qua.
Premetto: sto cercando di portare un programma VB in Gambas e l'operazione procede a fasi alterne: difficoltà. studio, risolvo velocemente, altri problemi, studio, e a forza di tentativi trovo una soluzione, e così via.
Questa volta però, dopo essere impazzito con vari help e spiegazioni multi-linguistiche, mi trovo più in braghe di tela di prima, quindi chiedo aiuto.
Esigenza:
devo creare degli Array di strutture publiche, sulle quali andare ad agire con dei metodi pubblici (es. aggiungi, elimina, ordina, stampa,..)
Le strutture e i metodi sono contenuti in un modulo per mie questioni di ordine del codice.
Nel form Main devo dichiarare e instanziare delle variabili delle mie strutture per passarle poi come argomenti alle funzioni del modulo.
Alltro punto fondamentale è che gli array di strutture devono essere dinamici per poter aggiungere o eliminare dei record.
2 (grandi) problemi:
1. nel form Main non riesco a dichiarare delle istanze delle strutture
2. non so (ed ottengo errori provando) come ridimensionare l'array con i metodi Resize e Delete.
Riporto di seguito il codice minimale che sto usando per le prove - i commenti sulle righe sono gli errori che ottengo):
Modulo con dichiarazioni e metodi
' Gambas module file
Public Struct myLista
nome As String
tel As Integer
End Struct
Private elenco[10] As Struct MyLista
Public Sub Riempi()
Dim i As Integer
Dim vv As Integer
For i = 0 To 9
vv = 100 * i
elenco[i].tel = vv
elenco[i].nome = CStr(vv)
Next
Return
End
Public Function GetItem(itm As Integer) As MyLista
Return elenco[itm]
End
Public Function Espandi(n As Integer) As Boolean
elenco.resize(n) 'unknown symbol 'resize' in class $MyLista[]
Return elenco.Count
End
Form Main che richiama il modulo:
Public Sub Form_Open()
'alternative provate
Dim itm As MyLista 'Unknown identifier MyLista
Dim itm As Struct MyLista 'Unexpected Struct
Dim itm As ModTest.MyLista 'Unexpected '.'
Dim itm As Struct ModTest.MyLista 'Unexpected Struct
modTest.Riempi
Label1.Caption = modTest.GetItem(5).nome
Print modTest.Espandi(3)
End
Una birra pagata a chi mi dà una dritta