Italian [B4X] [B4XPages] B4X Libs

luke2012

Well-Known Member
Licensed User
Longtime User
Ciao a tutti,
sto sviluppando la mia prima app B4XPages e riscontro un problemino col caricamento di una libreria, a riguardo stavamo dialogando io e @LucaMs in questo post:

SETUP
- Per far caricare la libreria B4X (B4XGifView) sia da B4A che da B4ì da quanto ho capito bisogna metterla nella cartella B4X contenuta all'interno della cartella "Librerie aggiuntive" puntata dal path dei 2 IDE (Strumenti / Configura Percorsi / Librerie aggiuntive).
Quindi sia in B4A che in B4i ho le stesso identico path: "C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\B4X\ADD_LIBRARIES" (copia e incolla quindi senza possibilità di errore).

Schermata 2021-01-08 alle 18.55.46.png


TEST
B4A OK: Quando apro il progetto di @LucaMs del post sopra in B4A tutto funziona correttamente, ovvero come si vede dallo screen qui sotto, la B4Xlib viene caricata e non compaiono errori nel codice.
B4i KO: Quando apro il progetto in B4i (che punta all'identico path della add. libraries di B4A) non funziona una m...a (scusate il francesismo ahahha).
Come vedete dallo screen la B4xlib non viene caricata (non compare nel lib manager) e giustamente appare l'errore nel codice.

Schermata 2021-01-08 alle 11.54.23.png


CONCLUSIONI
Sto sbagliando qualcosa io oppure è un bug ?
Sto usando la versione B4A 10.50 e la B4i 6.80.
 

Star-Dust

Expert
Licensed User
Longtime User
Nella lista delle librerie quindi non appare la libreria? oppure non appare spuntata?
 

LucaMs

Expert
Licensed User
Longtime User
Nella lista delle librerie quindi non appare la libreria? oppure non appare spuntata?
Infatti, al 99% semplicemente non l'hai selezionata; comodo usare il filtro sopra le librerie: basta che scrivi gif e dovrebbe trovarla; a quel punto la "spunti" = importi.

"C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\B4X\ADD_LIBRARIES"
Non farei un path del genere visto che nella tua ADD_LIBRARIES dovresti avere 4 cartelle:
B4A
B4J
B4I
B4X

e quindi due cartelle con lo stesso nome, B4X (nota che funziona ugualmente). Inoltre, non la metterei sul Desktop.

Semmai, se vuoi distinguere le "roba" AnywhereSoftware" da altre cartelle di tuoi strumenti di sviluppo, la farei così:

C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES

e quindi avrei:

C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\BA4
C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\B4J
C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\B4I
C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\B4X
 

luke2012

Well-Known Member
Licensed User
Longtime User
Nella lista delle librerie quindi non appare la libreria? oppure non appare spuntata?

In realtà nella lista delle librerie compariva (usando la ricerca veloce) ma non era spuntata (caricata), mentre in B4A risulta già spuntata.
Quindi mi chiedo se è un bug nel senso che i 2 IDE si comportano in modo diverso per i caricamente delle librerie oppure se è solo una questione che bisogna spuntarle a manina per ogni IDE (piattaforma).
 

luke2012

Well-Known Member
Licensed User
Longtime User
Infatti, al 99% semplicemente non l'hai selezionata; comodo usare il filtro sopra le librerie: basta che scrivi gif e dovrebbe trovarla; a quel punto la "spunti" = importi.


Non farei un path del genere visto che nella tua ADD_LIBRARIES dovresti avere 4 cartelle:
B4A
B4J
B4I
B4X

e quindi due cartelle con lo stesso nome, B4X (nota che funziona ugualmente). Inoltre, non la metterei sul Desktop.

Semmai, se vuoi distinguere le "roba" AnywhereSoftware" da altre cartelle di tuoi strumenti di sviluppo, la farei così:

C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES

e quindi avrei:

C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\BA4
C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\B4J
C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\B4I
C:\Users\Luca\Desktop\PROJECTS\SVILUPPO\ANYWHERE\ADD_LIBRARIES\B4X

PATH
"Non farei un path del genere visto che nella tua ADD_LIBRARIES dovresti avere 4 cartelle"
Si in effetti è un pò una ridondanza B4X. E ti confermo che funziona ugualmente nel senso che in B4i non appare spuntata ma appare come libreria disponibile (spuntabile) nella lista del lib manager di B4i.

B4i
In b4i ora spuntando la libreria l'errore nella dichiarazione è stato risolto. Ottimo.
Rimane però ancora un errore nella dichiarazione di "Public PageTwo As clspagTwo": tipo sconosciuto
Facendo un veloce check delle librerie spuntate in B4A e B4i noto che sono 3 e sono uguali (nel senso delle 2 B4X) e le 2 core specifiche per la piattaforma.
Però l'errore sembra indichi che manca una libreria in B4i (vedi screen qui sotto):

Schermata 2021-01-09 alle 10.28.27.png


Domanda. Non esiste un modo veloce (style search) per identificare quale libreria manca?
Ovvero dalla classe in errore risalgo alla libreria (mi sembra che esisteva un tool che lo faceva).
 

Star-Dust

Expert
Licensed User
Longtime User
Semplicemente LucaMS non possiede B4i e non ha potuto aprire l'ambiente IDE per spuntare la libreria in questione.

Per il secondo errore il penso sia simile. Devi aggiungere modulo esistente in B4i perchè non è stato fatto . Carica il modulo creato da Lucas fra i moduli esistenti e te lo riconosce.
 

luke2012

Well-Known Member
Licensed User
Longtime User
Semplicemente LucaMS non possiede B4i e non ha potuto aprire l'ambiente IDE per spuntare la libreria in questione.

Per il secondo errore il penso sia simile. Devi aggiungere modulo esistente in B4i perchè non è stato fatto . Carica il modulo creato da Lucas fra i moduli esistenti e te lo riconosce.

"Semplicemente LucaMS non possiede B4i e non ha potuto aprire l'ambiente IDE per spuntare la libreria in questione."
Si immaginavo anche perchè sò che @LucaMs non ha B4i. E' per questo che mi sono offerto per fare i test visto che ho sia B4A che B4i :)

"Per il secondo errore il penso sia simile...."
Si ora ho visto, manca l'inclusione della classe clspagTwo.
Un'altra cosa che devo capire bene, è dove mettere le classi (ovviamente condivise) e i moduli (anch'essi condivisi) in un progetto B4X.
All'interno del folder "Shared Files"? E poi nei 2 / 3 IDE li punto (includo) usando Progetto / Aggiungi moduli esistenti ?

Schermata 2021-01-09 alle 11.57.13.png


Forse l'approccio più corretto è che già gli IDE prevedessero (in automatico) il salvataggio delle classi di un progetto B4X in un folder condiviso e poi (sempre in automatico) quando vado ad aprire I vari IDE me li trovo già inclusi e non devo perdere tempo per sistemare tutti i pezzi mancanti (come mi sta succedendo su un altro progetto). No ? :)
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Se fai aggiungi libreria esistente non è necessario .
 

LucaMs

Expert
Licensed User
Longtime User
Le classi (comprese le B4XPages, quindi) ed i moduli di codice che sono in comune tra le diverse piattaforme vanno messi nella cartella principale del progetto, ovvero insieme alla classe B4XMainPage.bas creata automaticamente. Nella SharedFiles tutti i file di altro tipo, chiamiamoli "accessori" (immagini, audio, testi, etc. sempre comuni ai progetti).

Strano che nello zip di esempio la classe-pagina clspagTwo non fosse là. Quando crei una nuova classe, oltre al nome l'IDE ti chiede se vuoi aggiungerla alla directory "padre":

1610195588768.png


Se NON lo fai, non spunti la casella, la tua nuova classe (o modulo di classe o di servizio) si troverà nella cartella del progetto che stai sviluppando (nella B4A, nel mio caso), altrimenti la salverà dove ho detto sopra, insieme-allo stesso livello della B4XMainPage.bas, sarà comune a tutti i progetti ed in questi, infatti, sarà elencata così:

1610195757860.png


con (..) che indica appunto che il file si trova ad un livello superiore di directory ed è condiviso.

Ora sono andato a guardare lo zip e la classe sta dove deve stare; malgrado questo non ti veniva caricata automaticamente in B4i. Credo che sia questo un bug, infatti aprendo il file di progetto .b4i (con Notepad++, purtroppo ? ) ho notato che quella classe non viene importata - e nemmeno la libreria b4xgifview.

Farò altre prove (tra B4A e B4J, sempre per la mancanza di B4i), prima di cercare nel sito e poi eventualmente segnalare questo "bug".
 

LucaMs

Expert
Licensed User
Longtime User
Farò altre prove (tra B4A e B4J, sempre per la mancanza di B4i), prima di cercare nel sito e poi eventualmente segnalare questo "bug".
Essendo sveglio da poco (ho il fuso orario di San Francisco?:confused:), sia quando scritto sopra che quanto sto per scrivere potrebbe non essere esatto al 100%.

La nuova classe (o qualunque altro tipo di modulo) creata spuntando la casella "Add module to parent folder" viene effettivamente salvata ed indicata nel TAB Modules come ho scritto nel post precedente; viene anche inglobata nello zip (creato ctrl-clickando sul "Comment Link" apposito nella B4XMainPage).

Quando apri il progetto in un altro ambiente, né quella nuova classe né eventuali librerie vengono importante automaticamente. Suppongo che i motvi siano:

1 - Classi (moduli, più in generale) - l'IDE potrebbe importare tutti i .bas che trovasse nella "directory padre" ma se il programmatore ci avesse aggiunto dei bas sbagliati, creati chissa come? Questo comunque lo chiederò;

2 - Librerie - Queste penso che non vengano importate automaticamente (spuntate nel TAB Libraries) perché potrebbero non essere adatte all'ambiente aperto o magari venire utilizzate solo nell'ambiente che ha creato tutta la struttura di cartelle, ovvero il nuovo progetto.


P.S. https://www.b4x.com/android/forum/threads/b4xpages-shared-project-modules.126339/post-789612
 
Last edited:

luke2012

Well-Known Member
Licensed User
Longtime User
"Essendo sveglio da poco (ho il fuso orario di San Francisco?:confused:)" --> lancia il servizio di aggiornamento del fuso orario (però devi chiudere gli occhi e concentrarti) ahahah :)

Parlando di pezzi mancanti ti faccio un'altro esempio. Guarda questo progetto che ho creato da nuovo (Partendo da B4A) usando il template B4XPages (File / Nuovo / B4XPages).

Struttura progetto:
Schermata 2021-01-09 alle 17.02.01.png


Progetto aperto in B4A e B4i nel tab "Moduli":

Schermata 2021-01-09 alle 17.20.38.png


Noti qualcosa di strano ? Escludendo il servizio "Starter" che è specifico di B4A?
La prima volta che ho aperto il progetto in B4i mi è preso un colpo :) Manca tutto praticamente. Oltre i moduli anche le librerie B4X che sono usate e flaggate nella versione B4A.

Quindi a questo punto la domanda è:
Erel ha previsto che poi uno di deve andare a caricare (aggiungere) a manina tutti i moduli uno ad uno ? Però allora non capisco a cosa serve il discorso cartella padre e progetto B4X.
Se è così ci si perde un bel pò di tempo in più e non è propio il massimo della comodità. Io devo sistemare solo la versione B4i ma pensa se devi fare la stessa cosa anche per B4J.

Mi sembra strano che questo sia il funzionamento di base sui progetti con base B4X.
 

Attachments

  • Schermata 2021-01-09 alle 17.11.59.png
    Schermata 2021-01-09 alle 17.11.59.png
    275.3 KB · Views: 245
Last edited:

luke2012

Well-Known Member
Licensed User
Longtime User
Eh sì, non importa quei file. Cmq, non devi farlo uno alla volta, fortunatamente; dal menu Project - Add existing modules ti apre la cartella, li selezioni tutti e via.

Ciao Luca, Buongiorno :)
perlando del progettino SplashScreenAnim ho aggiunto manualmente in B4i la classe clspagTwo e ora giustamente non dà più errori ma solo 1 warning che riguarda il file "laypagTwo.bil" vedi screen (clspagTwo / B4XPage_Created).

Schermata 2021-01-11 alle 08.13.51.png


Anche questo secondo me potrebbe essere un punto di miglioramento (come già detto per i file classe dei progetti B4XPages) in quanto una volta che importi (l'IDE) automaticamente i file .bas delle classi B4XPages mi aspetterei che venga puntato il relativo file di layout (vedi screen qui sopra). No ?

Sistemando manualmente il progettino B4i (B4XPages) vado per aggiungere il file laypagTwo.bal ai file di B4i) e mi appare questa finestra:

Schermata 2021-01-11 alle 08.21.49.png


Premetto che sono nuovo nei progetti B4X (molto meno nuovo nei progetti B4A) ma secondo logica i file di layout che vengono puntati (caricati) dalle relativa classi pagina dovrebbero essere in un path "shared" (comune) similmente a quanto accade con i file delle classi B4XPages, ovvero dovrebbe essere l'IDE che riconoscendo il progetto come B4X salva i layout (B4X) in un path comune alle tre piattaforme. No?

Attualmente trovo il file "laypagTwo.bal" in pancia al file folder di B4A.
In questo caso la domanda che mi viene è: secondo te come ci si comporta?

1) Si lascia il file .bal nella cartella files di B4A e si aggiunge il file ai files di B4i?
2) Si sposta il file .bal nel parent folder del progetto B4X e quindi si aggiorna il puntamento in B4A e si aggiunge in B4i ?
3) Si sposta il file .bal nella cartella Shared Files e quindi si aggiorna il puntamenti di B4A e si aggiunge poi in B4i ?

Busta 1, busta 2 o busta 3? :)

UPDATE
Facendo mente locale mi sono accorto in effetti che tra B4A e B4i il file del layout si chiamano in 2 modi diversi: .bal per B4A e .bil per B4i.
Quindi mi sà che le tre opzioni sopra non sono percorribili ma bisogna ricrearlo a manina in B4i e copiare e incollare il layout dal layout di B4A tramite designer.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Buongiorgio anche a te.

mi aspetterei che venga puntato il relativo file di layout
Ma quel file non esiste, per l'ambiente aperto, esiste il file di layout per B4A e basta.

Voglio dire che io ho sviluppato quel progetto d'esempio con B4A ed ho creato il file di layout per questo ambiente. Quando vai ad aprire il corrispondente progetto B4i o B4J chiaramente non hai ancora preparato un file di layout per quella piattaforma, dovrai per forza farlo.

Magari un giorno avremo un unico IDE e file di layout di un unico tipo.
 

LucaMs

Expert
Licensed User
Longtime User
Attualmente trovo il file "laypagTwo.bil" in pancia al file folder di B4A.
Questo è strano; si vede che lo hai messo nella cartella principale, quella che contiene tutti e 3 i progetti, e poi dall'interno di B4A - cioè col progetto B4A aperto, hai clickato il link che importa i file dalla cartella ShareFiles alla cartella Files del progetto B4A.
 

luke2012

Well-Known Member
Licensed User
Longtime User
Questo è strano; si vede che lo hai messo nella cartella principale, quella che contiene tutti e 3 i progetti, e poi dall'interno di B4A - cioè col progetto B4A aperto, hai clickato il link che importa i file dalla cartella ShareFiles alla cartella Files del progetto B4A.

No sorry. ho capito il discorso (era un pò che non facevo app B4ì). Vedi UPDATE della mia risposta #13
 

luke2012

Well-Known Member
Licensed User
Longtime User
Esatto.

Ma un giorno avremo un unico IDE... anche se per allora sarò morto da un pezzo ?

ahahah Dai non essere così pessimista! Scusa ma quanti anni hai ? :)

Comunque ho creato il layout in B4i con nome identico a quello di B4A e in effetti mi ha creato un file .bil.
Poi vado per copiare gli elementi (che noto che c'è n'è solo 1 in questo caso) del layout da B4A a B4i (designer) e mi dà questo errore: "impossibile copiare il controllo". Ottimo ahahah
Noto che è un "RadioButton". Facendo ancora mente locale mi sembra di ricordare che il tipo radio button non esiste in B4i.

Ma me ne posso anche fregare in questo caso giusto ? Tanto la pagina 2 è solo un esempio x test.
Ora finalmente noto che nella versione B4i non compare più nessun errore! Finalmente ahhaha :)

Compilo su iPhone 12 Pro Max ( finto perchè quello vero mi costerebbe troppo :) ) e vediamo...
 

Attachments

  • Schermata 2021-01-11 alle 08.57.14.png
    Schermata 2021-01-11 alle 08.57.14.png
    267.4 KB · Views: 236

LucaMs

Expert
Licensed User
Longtime User
ahahah Dai non essere così pessimista! Scusa ma quanti anni hai ?
51 di troppo.

Noto che è un "RadioButton". Facendo ancora mente locale mi sembra di ricordare che il tipo radio button non esiste in B4i.
Eh sì, sarà quello il problema. Ho messo una view a caso (e per caso, essendo fortunato, ne ho messa una che evidentemente in B4i non esiste).

https://www.b4x.com/android/forum/threads/what-brought-you-to-b4x.126371/post-790076
 

luke2012

Well-Known Member
Licensed User
Longtime User
51 di troppo.


Eh sì, sarà quello il problema. Ho messo una view a caso (e per caso, essendo fortunato, ne ho messa una che evidentemente in B4i non esiste).

https://www.b4x.com/android/forum/threads/what-brought-you-to-b4x.126371/post-790076

Pochi più di me :) Poi sei ancora giovane se consideri che l'uomo biologicamente può vivere fino a 120 anni :)
Poi per il radio no prob. Ho creato il layout vuoto.

https://www.b4x.com/android/forum/threads/what-brought-you-to-b4x.126371/post-790076
Però in effetti quello che almeno potrebbe fare il designer è creare tutti i file .bil con lo stesso nome (anche vuoti). Pensa a progetti con n layout files. Per ognuno dei andare a a manina a crearli da nuovo da designer e stando attento a non sbagliare nome (i nomi devo essere identici).
 
Top