Italian lamentela sulla nuova versione

Star-Dust

Expert
Licensed User
Longtime User
Non ricordo, ma togliendolo non mi ha dato più errore
 

Star-Dust

Expert
Licensed User
Longtime User
Togliendo DoEvents si è risolto
 

Star-Dust

Expert
Licensed User
Longtime User
Ho rifatto le prove e il programma si interrompe senza segnalare errore, come si vede nel video.
Il codice é questo:
B4X:
Public Sub SetSelectPanel(Index As Int)
      PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
      delay(250)
      PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
End Sub

private Sub delay(Tempo As Long)
    Dim Limite As Long = DateTime.Now +Tempo
    Do While DateTime.Now< Limite
        DoEvents
    Loop
End Sub
Provato anche così:
B4X:
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
Dim Limite As Long = DateTime.Now + 250
Do While DateTime.Now< Limite
    DoEvents
Loop
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)

Togliendo il DoEvents funziona perfettamente.

ezgif.com-video-to-gif.gif
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Non si vede il codice che seleziona il panel.

Comunque, prova a mettere delay(260) (lasciando il DoEvents, ovviamente, solo per vedere se anche così va in "crash"?).
Succede lo stesso. Cosi funziona perfettamente:
B4X:
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
Sto supponendo che crasha perché richiamo la Sub contenente il delay ancora prima che i 250mills siano trascorsi e richiamo la funzione dove c'é un altro Delay con DoEvents quando ancora non si é consumato il precedente.

Pensa che pure cosi funziona bene:
B4X:
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
Sleep(250)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)

Cmq fermiamoci qua che siamo OT
 

luciano deri

Active Member
Licensed User
Longtime User
DoEvents è solo deprecato - puoi tutt'ora usare DoEvents e nessuno ti vieta di non usarlo.

Secondo me Erel ha studiato la cosa bene prima di introdurre questi novità. Se non riesci a implementare il tuo codice attuale senza usare DoEvents, farlo presente nel forum in inglese e molto probabilmente Erel ti dirà cosa fare. Così cogli l'occasione di presentare le tue lamentele direttamente a Erel perché non credo che Erel legge questo thread visto che in italiano.
Io personalmente in questo momento non sto più programmando in B4A per cui non ti posso dare la risposta (e probabilmente siamo in tanti che ha bisogno di capire meglio).
Già fatto, il risultato è stato sostituire DoEvents con alcune righe di codice che comunque non replicavano esattamente la funzione iniziale. Dove ho potuto ho tolto DoEvents, dove serviva, come ad esempio per mostrare una gif che gira durante una elaborazione o una semplice progressbar, l'ho tenuto.
 

luciano deri

Active Member
Licensed User
Longtime User
Succede lo stesso. Cosi funziona perfettamente:
B4X:
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
Sto supponendo che crasha perché richiamo la Sub contenente il delay ancora prima che i 250mills siano trascorsi e richiamo la funzione dove c'é un altro Delay con DoEvents quando ancora non si é consumato il precedente.

Pensa che pure cosi funziona bene:
B4X:
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
Sleep(250)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)

Cmq fermiamoci qua che siamo OT
DoEvents anche a me, sopra tutto all'inizio ha creato molti problemi, i generale se hai una sub con doevent chimata in enterpressed di un edittext schianta.
DoEvents non va bene per creare ritardi, ma è ottimo per rinfrescare l'ui dove però non c'è un evento in cui probabilmente java prevede il refresh, come ad esempio negli eventi delle view.
Ho risolto con callsubdelayed.
Una volta capiti i limiti doevent va bene, diventa un problema se il nuovo motore aggiunge criticità a questa istruzione. La sensazione è che Erel stia cercando di levarla, ma non riesce a fornire uno strumento analogo.
Un altro limite di Doevent è che se fa il refresh, l'activity non riceve gli eventi da inpust esterni (touch, click ecc), in questo caso Sleep può essere utile, ma non è semplice in quanto oltre all'attesa sleep fa il return.
Ricapitolando, sleep può essere utile, ma non è la stessa cosa di di Doevent e nemmeno ci assomiglia.
 

Star-Dust

Expert
Licensed User
Longtime User
DoEvents anche a me, sopra tutto all'inizio ha creato molti problemi, i generale se hai una sub con doevent chimata in enterpressed di un edittext schianta.
DoEvents non va bene per creare ritardi, ma è ottimo per rinfrescare l'ui dove però non c'è un evento in cui probabilmente java prevede il refresh, come ad esempio negli eventi delle view.
Ho risolto con callsubdelayed.
Una volta capiti i limiti doevent va bene, diventa un problema se il nuovo motore aggiunge criticità a questa istruzione. La sensazione è che Erel stia cercando di levarla, ma non riesce a fornire uno strumento analogo.
Un altro limite di Doevent è che se fa il refresh, l'activity non riceve gli eventi da inpust esterni (touch, click ecc), in questo caso Sleep può essere utile, ma non è semplice in quanto oltre all'attesa sleep fa il return.
Ricapitolando, sleep può essere utile, ma non è la stessa cosa di di Doevent e nemmeno ci assomiglia.
Mi sembra un ottima soluzione il CallSubDelay.. lo userò

B4X:
Sub SetSelectPanel(Index As Int)
             PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
             CallSubDelayed(Me,"SpostaPallino")
End Sub

Sub SpostaPallino
    '
    PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
Io ho ancora voglia di lamentarmi:

questa libreria mi sembra abbastanza interessante e più utile del Wait For: https://www.b4x.com/android/forum/threads/asynctask.84109/
Permette la programmazione asincrona con la Gestione dell'Ui senza scomodare la libreria Thread che é un pò complicata
 

Star-Dust

Expert
Licensed User
Longtime User
Non legge il forum itagliano
 
D

Deleted member 103

Guest
La mia App non ha avuto mai tutti questi Crach prima di usare B4a 7+, non può essere solo un caso!
Ho ricompilato la stessa App con B4a 6.80, senza fare nessuna modifica, e il risulato si vede - ci sono molto meno Crach. ;)
 

Star-Dust

Expert
Licensed User
Longtime User
Non dirlo a Erel che ti risponde che il motivo é che non hai attivato Application_Error, che gli UFO hanno planato in quel momento sopra la tua App e che Babbo natale con le renne ha creato un Bugs.
 
Last edited:
D

Deleted member 103

Guest
Che la mia App non è perfetta al 100% è chiarissimo, ma è anche chiaro che non ci sono mai stati tutti questi crach in 6 anni.
 

Star-Dust

Expert
Licensed User
Longtime User
Hai visto se la colpa é dell'ISIS ? Perché spesso é colpa loro che io sappia :) Sabotaggio all'occidente fin dalle App
 
D

Deleted member 103

Guest
Hai visto se la colpa é dell'ISIS ? Perché spesso é colpa loro che io sappia :) Sabotaggio all'occidente fin dalle App
Ca..o, allora devo stare attento. :D
Potrei togliere il permesso di scaricare la App da tutti i paesi arabi, che dici, può aiutare?
 
Top