Italian lamentela sulla nuova versione

Star-Dust

Expert
Licensed User
Longtime User
E non vogliamo dire che la crisi non esiste è tutta un invenzione? Una psicosi collettiva?
 

LucaMs

Expert
Licensed User
Longtime User
Ho riaperto la mia oramai famigerata app, con b4a 7.0.1 e...

upload_2017-5-29_18-4-15.png



A quanto pare ho usato poco DoEvents :p

[notare l'assenza di altri warning / errori: così si programma :cool:]
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
ho scatenato un mostro
comunque per me le riesumabili sono solo un impiccio
da una sub richiamo un altra sub per creare un effetto grafico, per poterlo vedere prima che la sub chiamante finisce, prima mettevo doevents e tutto funzionava, l'effetto grafico finiva il flusso tornava alla sub chiamante che continuava

togliendo il doevents non posso più creare una routine per creare gli effetti grafici, magari riutilizzabile, perché con sleep
mi torna immediatamente alla sub chiamante, che andrebbe avanti prima che l'effetto grafico finisce incasinando tutto

ergo
io che creo routine riutilizzabili praticamente per tutto devo rifare tutto? non esiste.....
 

LucaMs

Expert
Licensed User
Longtime User
io che creo routine riutilizzabili praticamente per tutto devo rifare tutto?
Tutta la programmazione dovrebbe tendere a questo, ovvero cercare di creare parti sw (routine o librerie) riutilizzabili.
Non è che adesso siccome esiste questo nuovo tipo di routine non puoi continuare a farlo, semplicemente ti basta evitare di metterci le istruzioni Sleep o Wait For (ovvero, creare normali routine, non resumable).


da una sub richiamo un altra sub per creare un effetto grafico, per poterlo vedere prima che la sub chiamante finisce, prima mettevo doevents e tutto funzionava, l'effetto grafico finiva il flusso tornava alla sub chiamante che continuava
Ci fai un esempio? Bastano i nomi delle routine e la spiegazione su cosa fanno.
 

Star-Dust

Expert
Licensed User
Longtime User
ho scatenato un mostro
comunque per me le riesumabili sono solo un impiccio
da una sub richiamo un altra sub per creare un effetto grafico, per poterlo vedere prima che la sub chiamante finisce, prima mettevo doevents e tutto funzionava, l'effetto grafico finiva il flusso tornava alla sub chiamante che continuava

togliendo il doevents non posso più creare una routine per creare gli effetti grafici, magari riutilizzabile, perché con sleep
mi torna immediatamente alla sub chiamante, che andrebbe avanti prima che l'effetto grafico finisce incasinando tutto

ergo
io che creo routine riutilizzabili praticamente per tutto devo rifare tutto? non esiste.....
hai sollevato un Vespasiano :D:D
 
Last edited:

moster67

Expert
Licensed User
Longtime User
togliendo il doevents non posso più creare una routine per creare gli effetti grafici, magari riutilizzabile, perché con sleep
mi torna immediatamente alla sub chiamante, che andrebbe avanti prima che l'effetto grafico finisce incasinando tutto

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).
 

LucaMs

Expert
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).
Intanto sto leggendo questa frase di Erel:
You can call Sleep(0) for the shortest pause. This can be used to allow the UI to be refreshed. It is a good alternative to DoEvents (which doesn't exist in B4J and B4i and should be avoided in B4A).

Dato che non è esattamente un'alternativa, visto che restituisce il flusso alla routine chiamante, mi becco le improperie di Erel ma vado a contestarlo là, che mi sembra il posto più adatto.
 

moster67

Expert
Licensed User
Longtime User
Dato che non è esattamente un'alternativa, visto che restituisce il flusso alla routine chiamante, mi becco le improperie di Erel ma vado a contestarlo là, che mi sembra il posto più adatto.
Se io fosse in te, scriverò il tuo codice attuale (ovviamente il snippet o i sub) e poi chiedi a Erel come modificarlo....
 

Star-Dust

Expert
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).
non l'ha messo nel forum inglese apposta per non farlo leggere ad Erel :p:p:p:p
 

LucaMs

Expert
Licensed User
Longtime User
non l'ha messo nel forum inglese apposta per non farlo leggere ad Erel :p:p:p:p
Star-Dust Cuor di Leone :p

Cmq hai fatto bene; a forza di contestare non sono esattamente entrato nelle simpatie di Erel.

Sarà pure vero che "Ambasciator non porta pene" ma da che Mondo è Mondo i lecchini sono molto più benvisti (dev'essere per questo che sto sulle @@ a tutti :p)
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
esempio
sub ominochecammina
call(passodestro)
call(passosinistro)
call(passodestro)
call(passosinistro)
end sub

sub passodestro
call(alzoiltacco)
doevents
call(alzolapunta)
doevents
call(spostoilpiede)
doevents
call(poggioilpiede)
doevents
end sub

sub passosinistro
....
end sub

ecco, con i doevents vedi la realtà, con lo sleep(0) vedi un accozzaglia maledetta e siccome non tutte le sub sarebbero della stessa lunghezza temporale l'effetto finale non sara` un omino che a fatto un passo
 

moster67

Expert
Licensed User
Longtime User
Caro @LucaMs - tu oramai fai parte del forum e il forum senza di te sarebbe un po' vuoto. Qui nel forum si parla anche del Sindrome di Luca....:p
Erel sa che ogni tanti "rompi" un po' troppo con i tuoi interventi ma credo che anche lui capisce la tua importanza... :p
Se posti un esempio del tuo codice in un thread nuovo credo che proverà di spiegare perché usare sleep(0) e non DoEvents...
 

LucaMs

Expert
Licensed User
Longtime User
@LordZenzo
A NASO (!!!) forse quello non è l'esempio giusto (ma di sicuro Sleep(0) non funziona come alternativa a DoEvents nel mio esempio).

Nel tuo caso, FORSE se tu mettessi lo Sleep(0) al posto dei DoEvents ma questi li mettessi nelle varie routine alzoiltacco, alzola punta, etc, funzionerebbe. FORSE.
 

LucaMs

Expert
Licensed User
Longtime User
Qui nel forum si parla anche del Sindrome di Luca.
:p Si, ho letto; mi sa che siano pronti a fare una colletta per mandarmi in analisi :p

Se posti un esempio del tuo codice
Come già detto, non ho codice che abbia problemi con Sleep, ma solo perché se non esiste un'alternativa al DoEvents, la dozzina di DoEvents che già fanno parte del codice della mia app non li sostituirò.
 

LordZenzo

Well-Known Member
Licensed User
Longtime User
si dice che bisogna creare codice orientato a gli oggetti e a gli eventi legati ad essi
ma non puoi non creare dei flussi costanti e doevents e` l'unico per ora che permette di aggiornare la gui e basta, sleep non aggiorna la gui, interrompe un flusso, tornando alla sub chiamante e ,casualmente, aggiorna la gui
 
Top