Utilizzare un Componente obsoleto
Come è noto, qualche Componente, attivo nelle precedenti versioni di Gambas, oggi è invece considerato obsoleto, e pertanto è stato disattivato. [nota 1]
Tali Componenti obsoleti non sono più disponibili nell'apposita sezione dell'IDE fra quelli forniti dalla corrente versione di Gambas, e non sono più utilizzabili nei progetti.
Eppure, qualora tali Componenti obsoleti non siano stati definitivamente eliminati dai sorgenti di Gambas [nota 2], è possibile richiamarli e quasi sempre utilizzare le loro Classi.
Il richiamo ed uso dei Componenti ormai obsoleti può avvenire da codice [nota 3], purché - come già detto - non siano stati definitivamente estromessi dai sorgenti di Gambas.
Nel progetto Gambas si dovrà fare uso delle Classi:
- " Component ", per richiamare il Componente obsoleto;
- " Class ", per richiamare la Classe che ci interessa di quel Componente obsoleto;
- " Object ", per richiamare Metodi e Proprietà della Classe utilizzata del Componente obsoleto.
Mostriamo un esempio pratico, nel quale si richiamerà l'ormai obsoleto e disattivato Componente "gb.sdl.sound" e si utilizzeranno alcune risorse della sua Classe Music per eseguire un file audio o Midi:
Private cl As Class Private esce As Boolean Public Sub Main() Dim sym, percorso_file As String Dim co As Component Dim b As Byte ' Imposta il percorso del file audio (.wav, .ogg, flac) o del file Midi: percorso_file = "/percorso/del/file" ' Carica innanzitutto il Componente "obsoleto" necessario per utilizzare la Classe che permetterà di eseguire il file: co = Component.Load("gb.sdl.sound") ' Carica quindi la Classe che permetterà di eseguire il file: cl = Class.Load("Music") Print "Simboli (\"Costanti\", \"Proprietà\", \"Metodi\" e \"Eventi\") posseduti e gestiti da '\e[34m"; co.Name; "\e[0m':" For Each sym In cl.Symbols Print b, sym Inc b Next Print Print ' Carica infine i Metodi specifici della Classe necessari per caricare ed eseguire il file: Object.Call(cl, cl.Symbols[1], [percorso_file]) Object.Call(cl, cl.Symbols[2], Null) While Not esce ' Richiama anche la Proprietà ".Pos" della Classe "Music" per sapere la currente posizione temporale dell'esecuzione: Write "\e[0m\r Tempo trascorso: \e[31m" & Str(Time(0, 0, 0, Object.GetProperty(cl, cl.Symbols[0]) * 1000)) Wait 0.01 Wend Write "\nEsecuzione terminata" Quit End Public Sub Application_Read() ' Premendo il tasto "Invio" della tastiera, termina l'esecuzione del file: Object.Call(cl, cl.Symbols[3], Null) esce = True End
Note
[1] La lista dei Componenti di Gambas sino a oggi dichiarati obsoleti: https://gambaswiki.org/wiki/comp-deprecated?l=it
[2] Minisini ha spiegato brevemente perché i Componenti obsoleti non vengono rimossi dall'architettura dello sviluppo di Gambas in questa discussione della Mailing list ufficiale: https://lists.gambas-basic.org/pipermail/user/2020-June/069507.html
[3] Vedere anche questa pagina: Attivare un Componente dinamicamente da codice