Fulvio75 Well-Known Member Licensed User Longtime User Nov 30, 2023 #21 Dato che così funziona per il mio scopo ovvero chiamare delle sub 'diciamo' costruite con delle variabili, c'è un altro modo per chiamare queste sub senza usare le classi che servono a ben altro? Con i moduli normali callsub2 non funziona, va solo con Activity e classi. La classe che ho creato contiene tutte le sub che devo chiamare componendone il nome in callsub2.
Dato che così funziona per il mio scopo ovvero chiamare delle sub 'diciamo' costruite con delle variabili, c'è un altro modo per chiamare queste sub senza usare le classi che servono a ben altro? Con i moduli normali callsub2 non funziona, va solo con Activity e classi. La classe che ho creato contiene tutte le sub che devo chiamare componendone il nome in callsub2.
LucaMs Expert Licensed User Longtime User Nov 30, 2023 #22 Le classi servono quando devi avere più oggetti simili tra loro ma con proprietà diverse. Ad esempio, potresti avere una List o Map di oggetti... boh, calciatore. Avresti una classe clsCalciatore; poi: B4X: Dim mapCalciatori Dim mapCalciatori.Inizialize Dim Calciatore1 As clsCalciatore Calciatore1.Initialize Calciatore1.Nome = "Ugo" Calciatore1.Cognome = "Ughini" Calciatore1.Ruolo = "Centrocampista" mapCalciatori.Put("Ughini", Calciatore1) Dim Calciatore2 As clsCalciatore Calciatore2.Initialize Calciatore2.Nome = "Frengo" Calciatore2.Cognome = "Freghini" Calciatore2.Ruolo = "Attaccante" mapCalciatori.Put("Frengo", Calciatore2) Per utilizzare delle sub (soprattutto funzioni, ovvero che restituiscano valori) di uso generale, di solito si usano i moduli di codice (ad esempio potrei averne uno per tutto ciò che riguarda SQLite), oppure una UNICA istanza di una classe, una variabile pubblica a disposizione di tutto il resto del progetto. Dipende molto da ciò che vuoi ottenere, comunque. Fulvio75 said: Con i moduli normali callsub2 non funziona, va solo con Activity e classi. Click to expand... Le Sub dei moduli puoi chiamarle semplicemente con NomeModulo.NomeSub. Stessa cosa con le variabili-oggetto, eh: NomeVariabileOggetto.NomeSub. Non so per quale motivo tu abbia dovuto usare CallSub2.
Le classi servono quando devi avere più oggetti simili tra loro ma con proprietà diverse. Ad esempio, potresti avere una List o Map di oggetti... boh, calciatore. Avresti una classe clsCalciatore; poi: B4X: Dim mapCalciatori Dim mapCalciatori.Inizialize Dim Calciatore1 As clsCalciatore Calciatore1.Initialize Calciatore1.Nome = "Ugo" Calciatore1.Cognome = "Ughini" Calciatore1.Ruolo = "Centrocampista" mapCalciatori.Put("Ughini", Calciatore1) Dim Calciatore2 As clsCalciatore Calciatore2.Initialize Calciatore2.Nome = "Frengo" Calciatore2.Cognome = "Freghini" Calciatore2.Ruolo = "Attaccante" mapCalciatori.Put("Frengo", Calciatore2) Per utilizzare delle sub (soprattutto funzioni, ovvero che restituiscano valori) di uso generale, di solito si usano i moduli di codice (ad esempio potrei averne uno per tutto ciò che riguarda SQLite), oppure una UNICA istanza di una classe, una variabile pubblica a disposizione di tutto il resto del progetto. Dipende molto da ciò che vuoi ottenere, comunque. Fulvio75 said: Con i moduli normali callsub2 non funziona, va solo con Activity e classi. Click to expand... Le Sub dei moduli puoi chiamarle semplicemente con NomeModulo.NomeSub. Stessa cosa con le variabili-oggetto, eh: NomeVariabileOggetto.NomeSub. Non so per quale motivo tu abbia dovuto usare CallSub2.
Fulvio75 Well-Known Member Licensed User Longtime User Nov 30, 2023 #23 LucaMs said: Non so per quale motivo tu abbia dovuto usare CallSub2. Click to expand... Appunto per comporre il nome della sub altrimenti come faccio? Mica si può fare modulo.codice & versione Codice & versione è il nome della sub da chiamare Praticamente ho fatto come chiamare un evento callsub(mevent,"_click")
LucaMs said: Non so per quale motivo tu abbia dovuto usare CallSub2. Click to expand... Appunto per comporre il nome della sub altrimenti come faccio? Mica si può fare modulo.codice & versione Codice & versione è il nome della sub da chiamare Praticamente ho fatto come chiamare un evento callsub(mevent,"_click")
Sagenut Expert Licensed User Longtime User Nov 30, 2023 #24 Voglio scrivere qualcosa anche io. Giusto per rompere le scatole. ? Per convertire al volo temporaneamente qualcosa puoi fare il cast. Esempio B4X: Dim a, b as String a = "5" b = "5" Log(a.As(Int) + b.As(Int))
Voglio scrivere qualcosa anche io. Giusto per rompere le scatole. ? Per convertire al volo temporaneamente qualcosa puoi fare il cast. Esempio B4X: Dim a, b as String a = "5" b = "5" Log(a.As(Int) + b.As(Int))
Fulvio75 Well-Known Member Licensed User Longtime User Nov 30, 2023 #25 Sagenut said: Voglio scrivere qualcosa anche io. Giusto per rompere le scatole. ? Per convertire al volo temporaneamente qualcosa puoi fare il cast. Esempio B4X: Dim a, b as String a = "5" b = "5" Log(a.As(Int) + b.As(Int)) Click to expand... ???????? Non c'entra nulla
Sagenut said: Voglio scrivere qualcosa anche io. Giusto per rompere le scatole. ? Per convertire al volo temporaneamente qualcosa puoi fare il cast. Esempio B4X: Dim a, b as String a = "5" b = "5" Log(a.As(Int) + b.As(Int)) Click to expand... ???????? Non c'entra nulla
Sagenut Expert Licensed User Longtime User Nov 30, 2023 #26 Fulvio75 said: ???????? Non c'entra nulla Click to expand... Mi sembrava di aver letto che in un punto ti serviva di usare un Int come fosse una stringa. Anche se poi la soluzione era un'altra. Era un post di Cultura Generale. ? ? Nel prossimo la Fotosintesi Clorofilliana.
Fulvio75 said: ???????? Non c'entra nulla Click to expand... Mi sembrava di aver letto che in un punto ti serviva di usare un Int come fosse una stringa. Anche se poi la soluzione era un'altra. Era un post di Cultura Generale. ? ? Nel prossimo la Fotosintesi Clorofilliana.
Alessandro71 Well-Known Member Licensed User Longtime User Nov 30, 2023 #27 Fulvio75 said: Appunto per comporre il nome della sub altrimenti come faccio? Mica si può fare modulo.codice & versione Codice & versione è il nome della sub da chiamare Praticamente ho fatto come chiamare un evento callsub(mevent,"_click") Click to expand... perchè creare una sub per ogni combinazione di modulo.codice & versione invece di una sola sub generica e passare codice, versione come parametri?
Fulvio75 said: Appunto per comporre il nome della sub altrimenti come faccio? Mica si può fare modulo.codice & versione Codice & versione è il nome della sub da chiamare Praticamente ho fatto come chiamare un evento callsub(mevent,"_click") Click to expand... perchè creare una sub per ogni combinazione di modulo.codice & versione invece di una sola sub generica e passare codice, versione come parametri?
LucaMs Expert Licensed User Longtime User Nov 30, 2023 #28 Fulvio75 said: Praticamente ho fatto come chiamare un evento callsub(mevent,"_click") Click to expand... Che sarebbe sbagliato. A parte che non mi piace affatto chiamare direttamente eventi delle view (si dovrebbe, semmai, chiamare la stessa sub chiamata dall'evento xxx_click), il primo parametro di callsub è l'oggetto, il secondo il nome del metodo (sub). Alessandro71 said: perchè creare una sub per ogni combinazione di modulo.codice & versione invece di una sola sub generica e passare codice, versione come parametri? Click to expand... Mi sa che se non ci dice almeno vagamente cosa dovrà fare quella sub, ci arriveremo il 2 gennaio 2024 ?
Fulvio75 said: Praticamente ho fatto come chiamare un evento callsub(mevent,"_click") Click to expand... Che sarebbe sbagliato. A parte che non mi piace affatto chiamare direttamente eventi delle view (si dovrebbe, semmai, chiamare la stessa sub chiamata dall'evento xxx_click), il primo parametro di callsub è l'oggetto, il secondo il nome del metodo (sub). Alessandro71 said: perchè creare una sub per ogni combinazione di modulo.codice & versione invece di una sola sub generica e passare codice, versione come parametri? Click to expand... Mi sa che se non ci dice almeno vagamente cosa dovrà fare quella sub, ci arriveremo il 2 gennaio 2024 ?
Fulvio75 Well-Known Member Licensed User Longtime User Dec 1, 2023 #29 Alessandro71 said: perchè creare una sub per ogni combinazione di modulo.codice & versione invece di una sola sub generica e passare codice, versione come parametri? Click to expand... Perchè ogni sub che ha all'interno diverse righe di codice molte righe che calcolano un dato hanno il nome Codice_Versione: allora... PLC passa il Codice e una Versione all'app La sub ha nome: Get_Codice_Versione(Parametro as int...Float...) as int....float per cui mi è molto più semplice così in automatico si indirizza il tutto alla giusta sub, che ognuna di esse deve fare e ha funzioni diverse, alcune prendono i dati SQLite altre calcolano il dato in autonomia. E' anche più ordinato (Lucas)
Alessandro71 said: perchè creare una sub per ogni combinazione di modulo.codice & versione invece di una sola sub generica e passare codice, versione come parametri? Click to expand... Perchè ogni sub che ha all'interno diverse righe di codice molte righe che calcolano un dato hanno il nome Codice_Versione: allora... PLC passa il Codice e una Versione all'app La sub ha nome: Get_Codice_Versione(Parametro as int...Float...) as int....float per cui mi è molto più semplice così in automatico si indirizza il tutto alla giusta sub, che ognuna di esse deve fare e ha funzioni diverse, alcune prendono i dati SQLite altre calcolano il dato in autonomia. E' anche più ordinato (Lucas)
LucaMs Expert Licensed User Longtime User Dec 1, 2023 #30 Fulvio75 said: Perchè ogni sub che ha all'interno diverse righe di codice molte righe che calcolano un dato hanno il nome Codice_Versione: allora... PLC passa il Codice e una Versione all'app La sub ha nome: Get_Codice_Versione(Parametro as int...Float...) as int....float per cui mi è molto più semplice così in automatico si indirizza il tutto alla giusta sub, che ognuna di esse deve fare e ha funzioni diverse, alcune prendono i dati SQLite altre calcolano il dato in autonomia. E' anche più ordinato (Lucas) Click to expand... A meno che quelle routine abbiano eventi e/o resumables sub, puoi metterle tutte in un modulo di codice, anziché in una classe.
Fulvio75 said: Perchè ogni sub che ha all'interno diverse righe di codice molte righe che calcolano un dato hanno il nome Codice_Versione: allora... PLC passa il Codice e una Versione all'app La sub ha nome: Get_Codice_Versione(Parametro as int...Float...) as int....float per cui mi è molto più semplice così in automatico si indirizza il tutto alla giusta sub, che ognuna di esse deve fare e ha funzioni diverse, alcune prendono i dati SQLite altre calcolano il dato in autonomia. E' anche più ordinato (Lucas) Click to expand... A meno che quelle routine abbiano eventi e/o resumables sub, puoi metterle tutte in un modulo di codice, anziché in una classe.
Fulvio75 Well-Known Member Licensed User Longtime User Dec 1, 2023 #31 LucaMs said: A meno che quelle routine abbiano eventi e/o resumables sub, puoi metterle tutte in un modulo di codice, anziché in una classe. Click to expand... si ma non va CallSub c'è scritto nella descrizione comando
LucaMs said: A meno che quelle routine abbiano eventi e/o resumables sub, puoi metterle tutte in un modulo di codice, anziché in una classe. Click to expand... si ma non va CallSub c'è scritto nella descrizione comando
Fulvio75 Well-Known Member Licensed User Longtime User Dec 1, 2023 #32 callsub lo utilizzo in un modulo di codice e può chiamare solo un activity oppure modulo di classe
LucaMs Expert Licensed User Longtime User Dec 1, 2023 #33 Giusto, devi "costruire" il nome della routine da chiamare. Vorrà dire che creerai una classe, istanziata una sola volta (unica variabile-oggetto pubblica, nella B4XMainPage, se il progetto è di questo tipo). In alcuni linguaggi è proprio possibile dichiarare un tipo "speciale" di classe, della quale si può creare proprio soltanto un'unica istanza. Si chiamano Singleton.
Giusto, devi "costruire" il nome della routine da chiamare. Vorrà dire che creerai una classe, istanziata una sola volta (unica variabile-oggetto pubblica, nella B4XMainPage, se il progetto è di questo tipo). In alcuni linguaggi è proprio possibile dichiarare un tipo "speciale" di classe, della quale si può creare proprio soltanto un'unica istanza. Si chiamano Singleton.
Fulvio75 Well-Known Member Licensed User Longtime User Dec 1, 2023 #34 LucaMs said: nella B4XMainPage Click to expand... ? ? ? ? ? ?
LucaMs Expert Licensed User Longtime User Dec 1, 2023 #35 Fulvio75 said: ? ? ? ? ? ? Click to expand... No, eh? Mi sono illuso ?
Fulvio75 Well-Known Member Licensed User Longtime User Dec 1, 2023 #36 LucaMs said: No, eh? Mi sono illuso ? Click to expand... ? queste chat mi piacciono??
Alessandro71 Well-Known Member Licensed User Longtime User Dec 1, 2023 #37 Fulvio75 said: E' anche più ordinato (Lucas) Click to expand... non dicevi sul serio, vero? ci sono pagine di un thread per far funzionare una cosa convoluta e non interamente chiara…
Fulvio75 said: E' anche più ordinato (Lucas) Click to expand... non dicevi sul serio, vero? ci sono pagine di un thread per far funzionare una cosa convoluta e non interamente chiara…
Fulvio75 Well-Known Member Licensed User Longtime User Dec 1, 2023 #38 Alessandro71 said: non dicevi sul serio, vero? ci sono pagine di un thread per far funzionare una cosa convoluta e non interamente chiara… Click to expand... a me piace l'ordine del codice perchè così trovo tutto al posto giusto, faccio giri e chiamate assurde di codice per metterlo in posizioni dove posso ritrovarlo facilmente
Alessandro71 said: non dicevi sul serio, vero? ci sono pagine di un thread per far funzionare una cosa convoluta e non interamente chiara… Click to expand... a me piace l'ordine del codice perchè così trovo tutto al posto giusto, faccio giri e chiamate assurde di codice per metterlo in posizioni dove posso ritrovarlo facilmente