Penso di avere raggiunto un buon livello di %').
Il mio programma contiene già da tempo istruzioni del tipo
Form2.Text = "Inserimento Movimenti del :"
comandate da una Form.class diversa. L'istruzione funziona perfettamente.
Ora nel trambusto delle prove fatte per gestire nella FMain.class oggetti della Form5, ho provato:
Form5.Text = "Bla Bla bla"
Come si vede dai due esempi riportati in successione, entrambi vanno a modificare il testo di una Form diversa, testo che rappresenta il titolo della form che si leggerà all'apertura della form stassa.
Ebbene il secondo esempio (Form5.Text = "Bla Bla bla) produce l'errore "Not an object". Ciò però non può essere vero, perchè altrimenti darebbe errore anche l'istruzione del 1° esempio.
Non soddisfatto ho scritto nello stesso punto di programma le seguenti istruzioni:
Form1.Text = "Viva Gambas"
Form2.Text = "Viva Gambas"
Form3.Text = "Viva Gambas"
Form4.Text = "Viva Gambas"
Form5.Text = "Viva Gambas"
Ebbene, premesso che nel programma le Form ci sono tutte, le prime 4 istruzioni funzionano, l'ultima da sempre lo stesso errore "Not an object"
Qualcuno saprebbe spiegarmi il perchè?
Ecco ora sono più %') %') di prima.
Ciao.
posta tutto il progetto così proviamo anche noi, inutile dire che è veramente molto molto molto molto strano
Tranquilli: ho scoperto l'inghippo!!! :D :D
Allora, prima di tutto,partendo dalla tua simpatica ironia, ho strutturato la Form6 esattamenmte come la Form5, avviando di tanto in tanto il Runtime e, »» Nessun Errore; Ottenuto codesto risultato, ho copiato tutta la Form5.class nella Form6.class ed ho rieseguito il Runtime e, »»» ahi ahi, l'errore si è ripetuto, questa volta sulla prima istruzione che riguardasse la Form6, cioè
Form6.Text = "Viva Gambas"
Ho rimosso tutte le istruzioni prima copiate nella Form6.class ed ho ripetuto il Runtime. Esito »»» Nessun Errore. Avendo ormai individuato l'insieme delle istruzioni dove nasce il problema ho ricopiato le istruzioni della Form5.class nella Form6.class, identificandole tutte come righe di commento. Ho riavviato il RunTime ed è andato naturalmente tutto bene.
Avendo salvato capra e cavoli, ho eliminato la vecchia Form5 ed ho rinominato la Form6, attribuendole il nome di Form5. Ho ripetuto il Runtime e non ho subito errori. Ora finalmente si trattava di individuare l'istruzione capace di mandare in tilt Gambas. Per scoprire ciò ho cominciato a togliere gli apicini di riga di commento in ogni riga, un pò per volta.
Ebbene, è inutile che vi dettagli ancora tutti i passi della mia paziente ricerca, ma ho trovato l'errore nel seguente gruppo di dihiarazioni:
PRIVATE i_TbPiaCoElem AS Integer = 150 'Numero di elementi definito per TbPiaCont
PRIVATE TbPiaCont AS String[i_TbPiaCoElem, 4] 'tabella di caricamento dei record fuori sequenza della tabella di DB "PianCont"
'PRIVATE El_TbPiaCont AS String[i_TbPiaCoElem[TbPiaCont]]
Ed è proprio l'ultima definizione che crea il problema; infatti, anche se ricordo di avere già provato tempo fa il programma con quelle istruzioni, poste, però in un'altra classe, senza intoppi. Tuttavia, in base al lavoro di revisione che sto facendo, penso che quest'ultimo tipo di organizzazione tabellare non mi serva più, quindi non ritengo che valga la pena di capire come aggiustarne il contenuto.
Certo, ho impegnato anche il Vostro tempo, ma non inutilmente, perchè mi avete acceso la lampadina che mi ha permesso di risalire all'errore.
Grazie a tutti.
Ciao.
A me "mi" pare che Gambas abbia TUTTE le ragioni per arrabbiarsi con quel codice:
PRIVATE i_TbPiaCoElem AS Integer = 150 'Numero di elementi definito per TbPiaCont
PRIVATE TbPiaCont AS String[i_TbPiaCoElem, 4] 'tabella di caricamento dei record fuori sequenza della tabella di DB "PianCont"
PRIVATE El_TbPiaCont AS String[i_TbPiaCoElem[TbPiaCont]]
Nell'ultima riga tu gli chiedi di creare una matrice composta da un numero di elementi pari a quelli contenuti nell'elemento i_TbPiaCoElem[TbPiaCont]. Peccato che tu abbia definito i_TbPiaCoElem come intero e non come matrice per cui non puoi indirizzare un elemento al suo interno con i_TbPiaCoElem[TbPiaCont]. Inoltre TbPiaCont è un'altra matrice per cui non puoi usarla come indice di una matrice che non esiste....
Forse il codice corretto sarebbe:
PRIVATE El_TbPiaCont AS String[TbPiaCont[i_TbPiaCoElem]]