bugs?, scope delle variabili di BASIC
Inviato: sabato 9 novembre 2013, 17:41
ho riscontrato due bug? con lo scope delle variabili di BASIC LibreOffice 3.4
==================================================
primo
https://wiki.openoffice.org/wiki/IT/Documentation/BASIC
Variabili private
Le variabili Private sono disponibili solo nel modulo in cui vengono definite. Utilizzate la parola chiave Private per definire la variabile:
però
Dalle prove che ho fatto le variabili a livello di modulo sono sempre visibili dall'esterno del modulo sia che le dichiaro public che private
es
'ModProvaScope
private m_private_str as string
public m_public_str as string
public Sub ValorizzaModVars
m_private_str = "my_m_private_str"
m_public_str = "my_m_public_str"
end Sub
'ModProva
Sub ProvaScope
call ValorizzaModVars
msgbox m_private_str ' "my_m_private_str"
msgbox m_public_str ' "my_m_public_str"
msgbox ModProvaScope.m_private_str ' "my_m_private_str"
msgbox ModProvaScope.m_public_str ' "my_m_public_str"
End Sub
==================================================
secondo
in oo BASIC è ancora possibile creare un modulo di Classe
basta scrivere all'inizio del modulo
Option Compatible
Option ClassModule
es se il modulo viene rinominato ClsMyClass
da un altro modulo si puo creare l'oggetto con
set oMyClass = new ClsMyClass
il problema di scope è che la classe è visibile solo agli altri moduli della stessa cartella di lavoro
se per esempio definisco la classe nelle [Macro personali].Standard allora questa non sarà più visibile dall'interno dei moduli del foglio di lavoro dei file aperti
ho visto adesso che si puo fare una segnalazione a
Apache OpenOffice (AOO) Bugzilla
(ma sto navigando con la chiavetta lentissima grrr)
==================================================
primo
https://wiki.openoffice.org/wiki/IT/Documentation/BASIC
Variabili private
Le variabili Private sono disponibili solo nel modulo in cui vengono definite. Utilizzate la parola chiave Private per definire la variabile:
però
Dalle prove che ho fatto le variabili a livello di modulo sono sempre visibili dall'esterno del modulo sia che le dichiaro public che private
es
'ModProvaScope
private m_private_str as string
public m_public_str as string
public Sub ValorizzaModVars
m_private_str = "my_m_private_str"
m_public_str = "my_m_public_str"
end Sub
'ModProva
Sub ProvaScope
call ValorizzaModVars
msgbox m_private_str ' "my_m_private_str"
msgbox m_public_str ' "my_m_public_str"
msgbox ModProvaScope.m_private_str ' "my_m_private_str"
msgbox ModProvaScope.m_public_str ' "my_m_public_str"
End Sub
==================================================
secondo
in oo BASIC è ancora possibile creare un modulo di Classe
basta scrivere all'inizio del modulo
Option Compatible
Option ClassModule
es se il modulo viene rinominato ClsMyClass
da un altro modulo si puo creare l'oggetto con
set oMyClass = new ClsMyClass
il problema di scope è che la classe è visibile solo agli altri moduli della stessa cartella di lavoro
se per esempio definisco la classe nelle [Macro personali].Standard allora questa non sarà più visibile dall'interno dei moduli del foglio di lavoro dei file aperti
ho visto adesso che si puo fare una segnalazione a
Apache OpenOffice (AOO) Bugzilla
(ma sto navigando con la chiavetta lentissima grrr)