Italian Struttura TYPE

Fulvio75

Well-Known Member
Licensed User
Ciao ho un problema con la struttura TYPE:

B4X:
Type ConnStatusBMPType (Connected As Bitmap,Disconnected As Bitmap,Error As Bitmap)

Public ConnStatus_BMP As ConnStatusBMPType = CreateConnStatusBMPType(LoadBitmap(File.DirAssets,"connected.png"), _
LoadBitmap(File.DirAssets,"disconnected.png"),LoadBitmap(File.DirAssets,"Error.png"))

Va in errore durante la compilazione, il type è in Process_Globals di un modulo di codice

Public ConnStatus_BMP As ConnStatusBMPType
src\xx\software\test\test.java:1801: error: cannot find symbol
 

Sagenut

Expert
Licensed User
Longtime User
Credo che non puoi richiamare Sub dalla Process_Global
Hai provato così
B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Type ConnStatusBMPType (Connected As Bitmap,Disconnected As Bitmap,Error As Bitmap)
    Public ConnStatus_BMP As ConnStatusBMPType
    ConnStatus_BMP.Connected = LoadBitmap(File.DirAssets, "connected.png")
    ConnStatus_BMP.Disconnected = LoadBitmap(File.DirAssets, "disconnected.png")
    ConnStatus_BMP.Error = LoadBitmap(File.DirAssets, "error.png")
End Sub
 

Sagenut

Expert
Licensed User
Longtime User
Oppure richiami dall'esterno la sua compilazione
Nella prima Activity o Page
B4X:
Modulo.ConnStatus_BMP = Modulo.CreateConnStatusBMPType(LoadBitmap(File.DirAssets,"connected.png"), LoadBitmap(File.DirAssets,"disconnected.png"),LoadBitmap(File.DirAssets,"error.png"))
 

Fulvio75

Well-Known Member
Licensed User
Credo che non puoi richiamare Sub dalla Process_Global
Hai provato così
B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Type ConnStatusBMPType (Connected As Bitmap,Disconnected As Bitmap,Error As Bitmap)
    Public ConnStatus_BMP As ConnStatusBMPType
    ConnStatus_BMP.Connected = LoadBitmap(File.DirAssets, "connected.png")
    ConnStatus_BMP.Disconnected = LoadBitmap(File.DirAssets, "disconnected.png")
    ConnStatus_BMP.Error = LoadBitmap(File.DirAssets, "error.png")
End Sub
ho sempre fatto diversamente per i Type, nel senso che creavo una sub Initialize_Type chiamata all'avvio dell'app tipo in start e attribuivo alla variabile 'as nuovo tipo' quello che mi serviva, senza crearla automaticamente come proposto da Type
 

Fulvio75

Well-Known Member
Licensed User
Risolto ho fatto come sempre fatto in start ho creato Initialize_Type e da li attribuisco alla variabile 'as nuovo tipo' i dati di cui ho bisogno
 

LucaMs

Expert
Licensed User
Longtime User
senza crearla automaticamente come proposto da Type
? Non ho capito cosa intendevi.

Cmq, al solito ho qualche suggerimento ?

Nel nome, anziché mettere Type alla fine, dai un prefisso. Io mi limito alla sola "t", minuscola, ma anche typXXXX non sarebbe male.

Dichiarare il nuovo tipo nella B4XMainPage (o il Main del progetto); in questo modo sarà possibile, eventualmente, serializzare gli oggetti di questo tipo.

Public ConnStatus_BMP As ConnStatusBMPType = CreateConnStatusBMPType(LoadBitmap(File.DirAssets,"connected.png"), _ LoadBitmap(File.DirAssets,"disconnected.png"),LoadBitmap(File.DirAssets,"Error.png"))
Nelle Process_Globals o Class_Globals mettere solo le dichiarazioni, non inizializzare le variabili; per questo ci sono le Sub Initialize apposta!
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Dichiarare il nuovo tipo nella B4XMainPage (o il Main del progetto); in questo modo sarà possibile, eventualmente, serializzare gli oggetti di questo tipo.
La Sub (la funzione) utile a creare un nuovo oggetto di questo tipo (custom type), falla generare all'editor; poi puoi spostarla in un modulo di codice, se vuoi.
 
Top