Italian lamentela sulla nuova versione

LordZenzo

Well-Known Member
Licensed User
Longtime User
attenzione: la routine che contiene lo Sleep non deve essere chiamata da un'altra; infatti nel suo esempio Erel la mette nell'evento click di un button, altrimenti, come già detto 1000 volte qui, il controllo torna alla chiamante)

Proprio per questo lo sleep non serve per aggiornare la gui, e se lo fa è solo per "culo", e si mo lo detto
 

LucaMs

Expert
Licensed User
Longtime User
Dato che qualcuno, in privato, mi ha indicato questo thread, qualcuno di cui non faccio il nome ma solo il nick, LordZenzo :p, ho riletto ogni post (per un decimo di secondo ho avuto la tentazione di scrivere: "mi sono riletto il thread"; quante brutte abitudini linguistiche abbiamo preso, anche per questo motivo penso che i traduttori sw vocali e simultenei non saranno mai perfetti. Certo, oggi si potrebbe anche dire "mi sono riletto il thread", basterebbe farselo tatuare :D).

Non ho notivà né scoperto trucchi utili, ma magari potrei precisare qualche risposta o commentare meglio.

il DoEvents, almeno per il pc, serve a dare modo al sistema operativo di elaborare la lista eventi che sono in sospeso
proprio come dice il nome
se devo creare una pausa nel flusso del programma, non uso il DoEvents ma un loop temporizzato
se devo fermare un ciclo lungo per elaborare gli eventi esterni al mio programma uso il DoEvents
se devo fermare un ciclo lungo per elaborare gli eventi interni o ho fatto male il programma o uso altri sistemi

Per il punto a), diciamo, non so quando sia necessario creare una pausa senza la necessità di aggiornare la GUI; l'unico caso che mi viene in mente potrebbe essere quando tu voglia visualizzare un msg all'utente per tot secondi senza che lui debba clickare qualcosa per chiuderlo (tipo un toast, che però prosegue con l'esecuzione del programma). Anche in questo caso potresti avere la necessità di "rinfrescare" la GUI.

Per il punto b) il DoEvents non fa sì che vengano gestiti eventi esterni al tuo programma, come accade invece con .Net.



Infatti preferisco la libreria Threading che aggiorna l'interfaccia grafica
Non so come funzioni quella libreria, mi pare di avegli dato un'occhiata una vita fà e di averla mollata per qualche motivo (forse devi creare un thread per ogni routine? Boh, qualcosa de genere, non ricordo). Sempre se non sbaglio, parlando del Wait For ti lamentavi di non poter far restituire un dato, ovvero chiamare una funzione, non un generico metodo; non mi pare che con i thread la cosa sia possibile e semplicissima.



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.
In questo caso Erel ha suggerito qualcosa che non riesce a sostituire il DoEvents inserito in un loop per aggiornare la GUI e non potrebbe, dato che quelle due istruzioni, Sleep e Wait For, restituiscono il controllo ad eventuali routine chiamanti, queste potrebbero essere concatenate, nel tuo progetto, e dare vita ad un bel casino.

Inoltre, bisogna fare attenzione a "presentare le tue lamentele direttamente ad Erel", a confutare, discutere novità di b4a perché Erel è alquanto suscettibile ed IN PRIVATO minaccia di ignorarti o bannarti! (chissà perché scrivo questo; beh, provate ad immaginare come mai io non abbia ricevuto la sua approvazione, tramite commento o Like, a questo mio recente post, nel quale ho pubblicato una routine da aggiungere ad una classe di Erel su richiesta di un membo; né risposte ad altri miei successivi post, anche domande).


Se io fosse in te, scriverò il tuo codice attuale (ovviamente il snippet o i sub) e poi chiedi a Erel come modificarlo....
L'avevo fatto, avevo scritto un paio di routine che speravo fossero in grado di gestire quella situazione (loop con DoEvents all'interno per aggiornare la GUI). Quel mio codice, però, che usava le nuove funzionalità, aveva qualche problemino: eseguiva delle istruzioni (log) in ordine errato, forse nemmeno aggiornava la GUI ed oltretutto lo Sleep impostato a 1000 ms... non faceva pause! Erel ha corretto quel codice? Ha spiegato come mai non funzionasse e addirittura non avvenisse alcuna pausa? No.


In quel codice la FirstSub contiene un Wait For: e se quella FirstSub venisse chiamata da un'altra routine? Risalite a catena involontarie.

Erel suggerisce ad esempio:
B4X:
Dim sf As Object = Msgbox2Async("Delete?", "Title", "Yes", "Cancel", "No", Null, False)

Wait For (sf) Msgbox_Result (Result As Int)
If Result = DialogResponse.POSITIVE Then
  '...
End If
Stesso discorso: dove si trova quel codice, con Dim, Wait For e If Result? In una routine chiamata da un'altra, alla quale verrebbe ceduto immediamente il controllo.


Va beh, potrei continuare all'infinito. Ultima cosa, fuori tema perfino con questo mio stesso post: in questo thread ho notato battute varie da vari membri i quali, proprio per questo, dovrebbero sentirsi in dovere di mettere un Like a questa mia RISPOSTA:
https://www.b4x.com/android/forum/threads/errore-a-me-inspiegabile.80954/#post-513011
Non che i Like mi servano o siano utili, ovviamente, ma per sottolineare che questo commento:
ed è la seconda volta che rilasci i tuoi consigli (inframmezzati da battute da ragazzino di terza media; evitale e assumi un atteggiamento consono alla tua età ed al fatto che scrivi in un forum tecnico)
fosse fuori luogo, stupido ed inefficacemente offensivo.


P.S. Beh, un Like adesso sarebbe tardivo ed inutile, probabilmente, visto che il post non verrebbe riletto. Diciamo che me lo sarei aspettato da alcuni di voi (grazie @Filippo)
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Credo che ne avevamo discusso in più forum di questo. Sei troppo tardivo :p
 

Star-Dust

Expert
Licensed User
Longtime User
Di questo? Ho scritto tanta di quella roba che non so a cosa ti riferisci :)
Di WaitFor e Sleep VS DoEvents. Se ne é parlato in tutte le salse, ed escludendo chi perché non vuole perdere tempo (o strategicamente) ha evitato il discorso, siamo arrivati alla conclusione che niente ci sostituisce il nostro DoEvents al momento.
 
D

Deleted member 103

Guest
P.S. Beh, un Like adesso sarebbe tardivo ed inutile, probabilmente, visto che il post non verrebbe riletto. Diciamo che me lo sarei aspettato da alcuni di voi (grazie @@Filippo)
Scusa, ma non leggo sempre tutto, e mi dispiace :(, perché le tue risposte mi piacciono sempre.:)
 

LucaMs

Expert
Licensed User
Longtime User
Avendo la fortuna di non lavorare, essendo ricco sfondato, non ho orari: magari faccio colazione alle 14 oppure alle 4 di mattina, pranzo alle 5 del pomeriggio o lo salto proprio e ceno alle 18 o alle 24!

Ci sarà pure un motivo per cui dò i numeri, no? :p

Scherzi a parte, per me è difficile essere regolare, per motivi vari. Spero di tornare a riuscirci, un giorno, perché è davvero importante.


P.S. per esempio sto per andare a proseguire il sonno notturno (sono sveglio dalle 3 di notte, andato a dormire alle 24!
 

LucaMs

Expert
Licensed User
Longtime User
Hai provato a giocare questi numeri alla lotteria? ;)
Ho iniziato a giocare, prima al Lotto, poi al Superenalotto e poi tornato al Lotto, dal 1980! Ma solo per arricchirmi, niente ambi o terni, cinquina o niente.

Ecco perché oggi sono ricco e non ho orari :p


[Nel caso ci fossero ladri pure stupidi online... sto scherzando, NUN C'HO 'NA LIRA :p]
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Deve installare la 7.01
 

Star-Dust

Expert
Licensed User
Longtime User
Accodandomi alle altre (tantissime) lamentele sulle nuove versioni ne aggiungerei un altra.

Ho compilato una mia libreria con B4A 6.50 e il risultato é un file zip (contentente xml e jar) di 7.75Mb
Oggi ho provato a ricompilare con B4A 7.30 (non uso WaitFor, ne Sleep e nemmeno Tanga) il risultato uno zip da 15,6Mb

Mi sembra un pò troppo ...
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Il codice é lo stesso, ho fatto la prova apposta per vedere le differenze di compilazione.
 
D

Deleted member 103

Guest
Accodandomi alle altre (tantissime) lamentele sulle nuove versioni ne aggiungerei un altra.

Ho compilato una mia libreria con B4A 6.50 e il risultato é un file zip (contentente xml e jar) di 7.75Mb
Oggi ho provato a ricompilare con B4A 7.30 (non uso WaitFor, ne Sleep e nemmeno Tanga) il risultato uno zip da 15,6Mb

Mi sembra un pò troppo ...
Alcune volte penso che nel motore non sia stata cambiata solo una vite ma tutto il motore.
Nella 6.80 quando chiudevo una app, terminavo tutti service e con ExitAplication si chiudeva la App completamente. Adesso questo sistema non funziona più. :(
 
Top