Italian [B4J] come fare quello che vorrei fare, ma che non so fare ?

Gianni M

Well-Known Member
Licensed User
Longtime User
Parliamo di B4J;
creo una libreria CALCOLATRICE.B4XLIB e la salvo nella cartella "Additional Libraries", dove sono presenti tante altre librerie utilizzate nel progetto B4J;
nel progetto B4J, aggiungo questa ed altre librerie e fin qui tutto OK;
ipotizziamo che la libreria è composta da diverse classi;

a questo punto vorrei realizzare un "clone" della libreria CALCOLATRICE.B4XLIB, chiaramente con le stesse classi, con lo stesso numero di parametri, ecc. , ma con il codice/istruzioni diverso; (al momento trascuriamo il motivo di questa scelta/esigenza);


1. il "clone" avrà lo stesso nome della libreria "originale", quindi CALCOLATRICE.B4XLIB;
2. dove salvo il "clone" della libreria? nella cartella "Shared Modules" ?
3. come posso con lo STESSO progetto B4J, selezionare una o l'altra libreria, originale o clone ?

vi prometto tanti like!
 

Star-Dust

Expert
Licensed User
Longtime User
Perché la libreria alternativa deve avere lo stesso nome? Con lo stesso nome non possono coesistere, l'ambiente IDE riconoscerà solo una.

Meglio chiamarle con 2 nomi. Libreria1 e Libreria2.
Poi selezioni dallode quella che vuoi, avendo stesi metodi non devi fare altri cambiamenti
 

Gianni M

Well-Known Member
Licensed User
Longtime User
Perché la libreria alternativa deve avere lo stesso nome? Con lo stesso nome non possono coesistere, l'ambiente IDE riconoscerà solo una.
certo.
ipotizzavo lo stesso nome, per evitare di selezionare dall' IDE quale libreria utilizzare;

sarebbe possibile gestire qualcosa in "Paths Configuration" con le due cartelle "additional libreries" e "shared modules", oppure in "build configurations" ?
oppure con #CustomBuildAction: nel modulo Main?
sono anche disposto a modificare qualche parametro, un file txt, un file config, una cartella di riferimento, o altro;
 

LucaMs

Expert
Licensed User
Longtime User
certo.
ipotizzavo lo stesso nome, per evitare di selezionare dall' IDE quale libreria utilizzare;

sarebbe possibile gestire qualcosa in "Paths Configuration" con le due cartelle "additional libreries" e "shared modules", oppure in "build configurations" ?
oppure con #CustomBuildAction: nel modulo Main?
sono anche disposto a modificare qualche parametro, un file txt, un file config, una cartella di riferimento, o altro;
Non mi pare sia possibile una cosa del genere. Inoltre, sarebbe un bel problema, perché dovresti poter impostare path diversi per ogni cartella di librerie e, soprattutto, poi si farebbe confusione tra una libreria e l'altra aventi lo stesso nome (cosa fa questa? E quella?)
 

Gianni M

Well-Known Member
Licensed User
Longtime User
(cosa fa questa? E quella?)
le librerie fanno la stessa cosa;


esempio:
il progetto calcola il tempo necessario per il percorso napoli - roma
la libreria1 calcola il tempo in auto via autostrada,
mentre la libreria2 tramite trasporto ferroviario;

mi rendo conto che questo esempio crea confusione,
ma, come dicevo nel post iniziale (al momento trascuriamo il motivo di questa scelta/esigenza);

concludo dicendo che una possibile soluzione potrebbe essere:
avere una libreria "standard.b4xlib" nel progetto "standard", ed eventualmente deselezionarla per far posto alla libreria "personalizzazioni.b4xlib";
 

Xfood

Expert
Licensed User
Se fanno piu o meno la stessa cosa , io utilizzere la stessa libreria, magari aggiungendo un parametro ai vari metodi/funzione e poi semplicemente
If parametro ='tipo1' then
'Fai una cosa
Else
'Fai un'altra cosa
End if
 

Star-Dust

Expert
Licensed User
Longtime User
certo.
ipotizzavo lo stesso nome, per evitare di selezionare dall' IDE quale libreria utilizzare;

sarebbe possibile gestire qualcosa in "Paths Configuration" con le due cartelle "additional libreries" e "shared modules", oppure in "build configurations" ?
oppure con #CustomBuildAction: nel modulo Main?
sono anche disposto a modificare qualche parametro, un file txt, un file config, una cartella di riferimento, o altro;
additional libreries solo per librerie Java. Potresti usarlo e usar ei metodi con JavaObject, creando el istanze degli oggetti .. spero tu ti intenda di Java.
Chi vuole intendere in tenda gli altri nel sacco a pelo
 

LucaMs

Expert
Licensed User
Longtime User
additional libreries solo per librerie Java. Potresti usarlo e usar ei metodi con JavaObject, creando el istanze degli oggetti .. spero tu ti intenda di Java.
Chi vuole intendere in tenda gli altri nel sacco a pelo
Non ho... in TENDAto (ergo, corro a comprare un sacco a pelo).

Cosa intendevi con:
additional libreries solo per librerie Java
Mettere in quella directory solo librerie Java (jar)?
 

Star-Dust

Expert
Licensed User
Longtime User
Puoi usare il comando per le librerie in jar
 

Star-Dust

Expert
Licensed User
Longtime User
è proprio questo che vorrei evitare
Un'alternativa sarebbe di creare una libreria clone dell'originale. Al momento che le inizializzi mettere un parametro booleano e così la libreria sa se deve restituirti i metodi della libreria originale oppure il metodi ricostruiti da te.

Ovviamente la libreria clone la chiamerà in modo diverso. Il tuo software deve agganciarsi solo ai metodi della libreria clone. La libreria clones farà tutto il resto del lavoro richiamando la libreria originale o meno
 

Elric

Well-Known Member
Licensed User
Posto che la richiesta è un po' particolare, potrebbe fare al caso tuo:
  1. fare un clone la cartella B4J (che qui di seguito chiamerò J4B);
  2. creare una cartella per le librerie aggiuntive per J4B e infilarci dentro la libreria CALCOLATRICE.B4XLIB modificata (quella del trasporto ferroviario, per restare sul tuo esempio).
  3. creare un nuovo progetto in J4B e aggiungere con link relativo tutti i moduli e classi del progetto originale in B4J - in questo modo il progetto sarà sempre lo stesso, sia che tu lo modifichi in B4J sia che tu lo modifichi in J4B.
Ora, a seconda che tu apra B4J o J4B, il progetto sarà il medesimo ma cambia solo che se avvii un'istanza B4J avrai la libreria dell'autostrada mentre se avvii J4B avrai la libreria del trasporto ferroviario. E puoi anche tenerli aperti contemporaneamente (anche se forse avrà qualche problema di aggiornamento nelle modifiche che farai al progetto).

Ovviamente non l'ho provato, ma mi pare l'unica* soluzione praticabile.

L'altra è chiedere in wish.

* ho scritto "unica" perché chiedere in wish non mi pare una soluzione praticabile. Sempre a mio parere.
 
Top