Differenze tra le versioni di "Utilizzare un Componente obsoleto"

Da Gambas-it.org - Wikipedia.
 
(22 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Come è noto, qualche ''Componente'', attivo nelle precedenti versioni di Gambas, oggi è invece considerato ''obsoleto'', e pertanto è stato disattivato.
+
Come è noto, qualche ''Componente'', attivo nelle precedenti versioni di Gambas, oggi è invece considerato ''obsoleto'', e pertanto è stato disattivato. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
  
 
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.
 
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, nonostante tali ''Componenti'' sia dichiarati obsoleti, ed il loro svilupo ed aggiornamento sia stato arrestato, i loro ormai vecchi sorgenti sono stati lasciati dagli sviluppatori del linguaggio Gambas nei file sorgente dei ''Componenti'' di Gambas.
+
Eppure, qualora tali Componenti obsoleti non siano stati definitivamente eliminati dai sorgenti di Gambas <SUP>&#091;[[#Note|nota 2]]&#093;</sup>, è possibile richiamarli e quasi sempre utilizzare le loro ''Classi''.
  
Questa circostanza rende possibile richiamarli e quasi sempre utilizzare le loro ''Classi''.
+
Il richiamo ed uso dei ''Componenti'' ormai obsoleti può avvenire da codice <SUP>&#91;[[#Note|nota 3]]&#93;</sup>, purché - come già detto - non siano stati definitivamente estromessi dai sorgenti di Gambas.
 
 
Sono almeno due le modalità per richiamare ed utilizzare le risorse di tali ''Componenti'' ormai obsoleti.
 
 
 
 
 
==Riattivazione dall'IDE di Gambas==
 
La prima modalità prevedere la loro possibile riattivazione dall'IDE di Gambas.
 
 
 
Ecco come fare:
 
<BR>1) nell'IDE cliccare in alto nel menu e scegliere le seguenti voci: " ''Progetto --> Proprietà'' ";
 
<BR>2) nella finestra di dialogo che appare cliccare su "''Componenti''";
 
<BR>3) appariranno tutti i Componenti attivabili;
 
<BR>4) al di sopra di essi, a destra, e più precisamente nella prima riga scrivibile all'estrema destra, proprio sotto la icona X per chiudere la finestra di dialogo, v'è un tastino virtuale contenente una piccola icona con un cerchietto rosso sbarrato. Lasciando il puntatore del mouse su tale icona, apparirà un popup avente il seguente testo: " ''Show deprecated components'' ".
 
<BR>5) cliccare su tale tastino;
 
<BR>6) in tal modo saranno mostrati i ''Componenti'' ormai obsoleti, che potranno comunque essere attivati con la modalità consueta e così utilizzati.
 
 
 
Ecco, dunque, come si mostrerà la finestra dei Componenti; quelli in colore grigio chiaro sono i Componenti obsoleti riattivabili:
 
[[File:Uso_Componenti_obsoleti.png]]
 
 
 
 
 
==Riattivazione da codice==
 
Il richiamo ed uso dei ''Componenti'' ormai obsoleti può avvenire anche da codice<SUP>&#91;[[#Note|nota 1]]&#93;</sup>
 
  
 
Nel progetto Gambas si dovrà fare uso delle ''Classi'':
 
Nel progetto Gambas si dovrà fare uso delle ''Classi'':
Riga 34: Riga 13:
  
  
Mostriamo un esempio pratico, nel quale si richiamerà l'ormai obsoleto e disattivato Componente "''gb.sdl.sound''" - ormai obsoleto - e si utilizzeranno alcune risorse della sua Classe "''Music''" per eseguire un file audio o Midi:
+
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:
 
  Private cl As Class
 
  Private cl As Class
 
  Private esce As Boolean
 
  Private esce As Boolean
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim sym, percorso_file As String
 
   Dim sym, percorso_file As String
 +
  Dim co As Component
 
   Dim b As Byte
 
   Dim b As Byte
 
    
 
    
  <FONT Color=gray>' ''Impostiamo il percorso del file audio (.wav, .mp3, .ogg) o del file Midi:''</font>
+
  <FONT Color=gray>' ''Imposta il percorso del file audio (FLAC, OGG, WAV):''</font>
  percorso_file = "<FONT Color=gray>''/percorso/del/file''</font>"
+
  percorso_file = "<FONT Color=darkgreen>''/percorso/del/file''</font>"
 
    
 
    
  Component.Load("gb.sdl.sound")
+
<FONT Color=gray>' ''Carica innanzitutto il Componente "obsoleto" necessario per utilizzare la Classe che permetterà di eseguire il file:''</font>
 +
  co = <FONT Color=red>Component.Load</font>("<FONT Color=darkorange>gb.sdl.sound</font>")
 
      
 
      
  cl = Class.Load("Music")
+
<FONT Color=gray>' ''Carica quindi la Classe che permetterà di eseguire il file:''</font>
 +
  cl = <FONT Color=red>Class.Load</font>("Music")
 
      
 
      
  Print "Simboli di SDL supportati da 'gb.sdl.sound':"
+
  Print "Simboli (\"Costanti\", \"Proprietà\", \"Metodi\" e \"Eventi\") posseduti e gestiti da '\e[34m"; co.Name; "\e[0m':"
  For Each sym In cl.Symbols
+
  For Each sym In cl.Symbols
    Print b;; sym; "  ";
+
    Print b, sym
    Inc b
+
    Inc b
  Next
+
  Next
  Print
+
  Print
  Print
+
  Print
 
      
 
      
  Object.Call(cl, cl.Symbols[1], [percorso_file])
+
<FONT Color=gray>' ''Carica infine i Metodi specifici della Classe necessari per caricare ed eseguire il file:''</font>
  Object.Call(cl, cl.Symbols[2], Null)
+
  <FONT Color=red>Object.Call</font>(cl, cl.Symbols[1], [percorso_file])
 +
  <FONT Color=red>Object.Call</font>(cl, cl.Symbols[2], Null)
 
      
 
      
  While Not esce
+
  While Not esce
    Write #File.out, "\r Tempo trascorso: " & Date(0, 0, 0, 0, 0, 0, Object.GetProperty(cl, cl.Symbols[0]) * 1000)
+
<FONT Color=gray>' ''Richiama anche la Proprietà ".Pos" della Classe "Music" per sapere la currente posizione temporale dell'esecuzione:''</font>
    Wait 0.01
+
    Write "\e[0m\r Tempo trascorso: \e[31m" & Str(Time(0, 0, 0, <FONT Color=red>Object.GetProperty</font>(cl, cl.Symbols[0]) * 1000))
  Wend
+
    Wait 0.01
 +
  Wend
 
    
 
    
  Print "Esecuzione terminata"
+
  Write "\nEsecuzione terminata"
  Quit
+
  Quit
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Application_Read()
+
  Public Sub Application_Read()
 
 
  Dim s As String
 
 
 
  Input #File.In, s
 
 
      
 
      
  <FONT Color=gray>' ''Se dalla console/terminale invio la lettera 'q', allora termina l'esecuzione del file:''</font>
+
  <FONT Color=gray>' ''Premendo il tasto "Invio" della tastiera, termina l'esecuzione del file:''</font>
  If s = "q" Then Object.Call(cl, cl.Symbols[3], Null)
+
  <FONT Color=red>Object.Call</font>(cl, cl.Symbols[3], Null)
  esce = True
+
  esce = True
 
    
 
    
  '''End'''
+
  End
  
  
Riga 89: Riga 69:
  
 
=Note=
 
=Note=
[1] Vedere anche questa pagina della Wiki: http://www.gambas-it.org/wiki/index.php?title=Attivare_un_Componente_dinamicamente_da_codice
+
[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]]

Versione attuale delle 04:20, 18 nov 2024

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:

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 (FLAC, OGG, WAV):
 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