Italian La prossima settimana, VACANZE... ma per ora vado avanti

CyclopDroid

Well-Known Member
Licensed User
Longtime User
A me, questo fatto dei DoEvents proprio non mi cva giù. LucaMS die che sono Refresh...ed io pensavo he servivono come attesa di un evento (come fa capire la sua traduzione), ovvero che debba attendere che un evento venga eseguito.
Ma non è così, perché o cè o non c'è non vedo differenza.
La cosa che più mi fa inaz.. di questo B4A è proprio questa.
Mi capita moltissime volte che, se metto un break-point, tutto funziona normalmente...se lo tolgo, o saltano fuori errori inconcepibili, oppure non fa quello che doveva fare :mad::mad:
Oggi, ad esempio, nel mio gioco, senza fare nulla (se non mettere l'accesso a Facebook), non salva più.

Ma se metto un break poin....miracolosamente salva :eek::mad::mad:
Poi, al click, spuntano errori che non mi da a mai...sempre, se metto un break-point, non li da più!!!

Avogli a mettere cicli di attesa...anzi, se lo metto (anche di un solo secondo) si blocca tutto :mad:
 

luciano deri

Active Member
Licensed User
Longtime User
Relativamente ai DoEvents riporto la traduzione della risposta di Erel:
"DoEvents dovrebbero per lo più essere evitato. Utilizzare un timer, invece, se si desidera visualizzare i pannelli mentre vengono aggiunti."
https://www.b4x.com/android/forum/threads/problem-with-doevents-on-android-4-4-2.56060/
E qui uno si incazza, è come dire questa macchina frena male quindi evita di frenare. Nel caso di ProgressDialogShow il DoEvents fa girare la rotella, come faccio a non metterlo? Il problema di B4A è che non sempre la trasposizione java del codice funziona su tutti i dispositivi, se hai il culo di capire dall'errore dove è il problema bene altrimenti devi andare per tentativi in modo da identificare l'istruzione che B4A converte a membro di segugio.... Per ora l'alternativa è fare il progetto direttamente in java oppure conoscere qualche altro linguaggio alla portata degli esseri umani normali che abbia tutti i pregi di B4A, ma senza i difetti.
 

LucaMs

Expert
Licensed User
Longtime User
Dissento parecchio con Erel circa i DoEvents.

Se essi funzionano come in VB.Net, servono a consentire al sistema operativo di far eseguire alcuni eventi (di sistema, non del proprio progetto, anzi, non solo del proprio progetto) dall'interno di un blocco di codice che impedirebbe la loro esecuzione.

Ad esempio, se io scrivo un ciclo come:

For I = 1 to 100000
Next

durante quei 100.000 cicli il sistema non fa altro, non consente altro, in pratica tutto il dispositivo si blocca finché non è completo l'ultimo "giro".

Quindi, all'interno di quel For/Next, mettendo DoEvents, qualsiasi evento di sistema potrà invece "scatenarsi" (avvenire, non so come dire).

Nella costruzione del contenuto di una ScrollView, come forse avviene riguardo alla risposta di Erel riportata da Luciano, si dovrebbe usare quello che in VB.NET è il Refresh e in b4a è Invalidate. Se però non si usa anche DoEvents, il sistema non ridisegna la ScrollView finché non è completata la costruzione di tutte le view inserite nella ScrollView.

Inoltre... vi pare che esisterebbe un comando DoEvents se fosse controindicato usarlo?!?!?!

Per quanto riguarda @erosmax... dovrei vedere il codice per capire (cercare di capire!); considera che in alcuni casi, le cose in debug mode non funzionano, per via del fatto che, se non ho capito male, in debug mode tutto avviene in un unico thread, quello della Main, mentre in esecuzione è possibile che la tua app utilizzi più thread (dipende dalla struttura dell'app, se ne fa uso).


[P.S. Ho scritto una cosa imprecisa: durante quel ciclo senza il DoEvents al suo interno, è l'app che non riceve gli eventi dal sistema operativo (cosa che avviene, invece, se si inserisce il DoEvents)].
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Avrei una domanda per @AlpVir ; la scrivo qui perché non è di vitale importanza.

Ieri ascoltavo un telegiornale RAI con "la coda dell'orecchio" (quindi non sono certo di ciò che ho sentito).

Mi è sembrato che parlassero di un record, 6 ore e tot minuti per una... "ascensione in discesa".

Avrò avuto le traveggole uditive, ma essendo abituato alle frescacce dette da giornalisti raccomandati pagati con i nostri soldi...
e poi magari esiste una "specialità" chiamata in quel modo (il che sarebbe ancora più ridicolo :D)


[P.S. Ecco, ho cercato... si tratta di ascesa E discesa dal Monte Bianco, in 6h 43m, ma non sono ancora convinto che il giornalista non abbia detto in quel modo, hehehe.
Del resto ne dicono tante da farci un film di successo al cinema :D.
La giornalista in studio, tempo fa: "... è stata uccisa con 15 coltellate"... parte il servizio... "... uccisa con un'unica coltellata alla gola"]
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Ho dato un'occhiata, ma non è possibile, penso, capire bene, non vedendo tutto il codice.

Ho letto che hai aggirato il problema con una CallSubDelayed ma in quel codice ho anche notato che non hai rimesso il focus sulla EditText.
Chissà che non sia quello il problema.
Se la EditText fa parte di un Item di una ScrollView o CustomListView o... magari in quel momento non è la view "corrente" (ma l'errore sarebbe diverso, però).

Sempre a naso, non vedendo il codice, ricordo vagamente che a volte quel tipo di errore si risolve aumentando la memoria in un file ini di b4a.

Dovrei cercare, ma puoi farlo anche tu, dovrebbe essere una mia risposta nel forum italiano (mi sembra, sigh).
 

luciano deri

Active Member
Licensed User
Longtime User
Anche io avevo pensato che il problema fosse nel request focus, ma non era quello tant'è che adesso l'ho rimesso. Commenta qua e commenta là ho verificato che senza il msgbox funzionava, allora cerca cerca, ho trovato questo.
https://www.b4x.com/android/forum/t...mes-my-application-crashes.56146/#post-353924
Guarda caso la soluzione mi risolve il problema.
Però non si può andare avanti così, che ogni volta che schianta devo trovare l'istruzione birbante per tentativi, e inventare un trucchetto per farla funzionare.
P.S al posto del DoEvents ho dovuto mettere un timer...
 

LucaMs

Expert
Licensed User
Longtime User
AUGURI @erosmax

buon_compleanno.jpg
 

LucaMs

Expert
Licensed User
Longtime User
Speravo di fare tutto in due giorni ma, come al solito, tutto sembra più facile di quanto sembri.

Comunque, ho completato (possibili bug a parte) una libreria e un'app per gestire le traduzioni dei testi nelle app.

Dategli un... "cuc" (non so se si trovi la traduzione su Google Translate, per questa parola :D)

https://www.b4x.com/android/forum/threads/lmtranslationdbmanager.58660/
 

udg

Expert
Licensed User
Longtime User
Be' se la libreria serve per le traduzioni..allora sarà la libreria a tradurre "cuc" :D
 

LucaMs

Expert
Licensed User
Longtime User
La posto qui, prima di metterla in un nuovo thread nel forum italiano e in quello "generale":

Ho fatto mezza domanda nel forum generale riguardo alle icone nelle EditText (mi sono agganciato ad un'altra domanda) ma nessuna risposta, tantomeno da Erel.

Come cacchio si fa a gestire le emoticon in una EditText, come nelle chat (addirittura in alcune sono animate)?
Oltretutto, SEMBRA che vengano trattate come normali caratteri



P.S. domande già fatte, a quanto pare.
 
Top