Italian Errore a me inspiegabile)

Star-Dust

Expert
Licensed User
Longtime User
Hai provato a riscrivere l'App daccapo?, di solito funziona :p:p

P.S. Hai provato a compilare con B4A 6.80- (Di solito funziona anche questo)
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Hai provato a riscrivere l'App daccapo?, di solito funziona
Lo prendo come una battuta: 15 activity e 7 moduli !
Uso la versione 7.0; l'inconveniente non è capitato in occasione di un aggiornamento del linguaggio.
Sto indagando su questa Activity_Create che risulterebbe essere una misteriosa "Resumable Sub"
Prendo per buono il tuo motto "Posso accettare la sconfitta, tutti falliscono in qualcosa. Ma non posso accettare di rinunciare a provarci"
 

AlpVir

Well-Known Member
Licensed User
Longtime User
RISOLTO: C'era un'istruzione Sleep(0) in Activity_Create. Tale istruzione era, in precedenza, un DoEvents. Avevo capito che DoEvents era deprecato e doveva essere sostituito con uno Sleep(0); lo avevo fatto senza timore.
In conclusione: togliendo questo Sleep(0) tutto è ritornato come prima, salvo 2 giorni di impazzimento mio e vostro.
Grazie a tutti.
 

Star-Dust

Expert
Licensed User
Longtime User
Era una battuta, tranne il fatto di compilare con 6.80.
Perché leggendo il forum molti stanno avendo grandi problemi con l'aggiornamento, ho supposto che compilando con 6.80 tutto sarebbe funzionato come prima. :p

Infatti come volevasi dimostrare era legato all'aggiornamento del 7.0. Sleep(0) non corrisponde a DoEvents come ha ampiamente dimostrato @LucaMs (a suo rischio e pericolo)
Io ancora uso 6.50 per intenderci. :D
 

LucaMs

Expert
Licensed User
Longtime User
Infatti come volevasi dimostrare era legato all'aggiornamento del 7.0. Sleep(0) non corrisponde a DoEvents come ha ampiamente dimostrato @LucaMs (a suo rischio e pericolo)
Io ancora uso 6.50 per intenderci. :D
Leggermente OT ma visto quale fosse l'errore voglio "raccontarvi" una stranezza; riguarda un mio post in questo thread:
Ora che ci penso, io sto compilando una mia app con la versione precedente di b4a, la 6.80, perché con la 7 ottengo un errore che suppongo sia dovuto ad una mia libreria, che dovrei ricompilare con la 7. Forse l'errore era anch'esso incomprensibile; fò una provola e... aggiorno questo post...

P.S.
A quanto pare non era in fase di compilazione, ergo non dovrebbe entrarci un tubero.
La mia libreria in questione è la SuggestionEditText (quindi una custom view).
La utilizzo nella mia famigerata app: né questa né la libreria contengono routine riesumabili, quindi né istruzioni Sleep né Wait For.
Compilando l'app con b4a 6.80, tutto ok; la compilazione con la 7.01 viene completata senza errori ma, a runtime, l'app va in crash ed il messaggio d'errore:

java.lang.NoSuchMethodError: anywheresoftware.b4a.sql.SQL.ExecNonQueryBatch
at b4a.example.suggestionsedittext._addallasync(suggestionsedittext.java:111)

(e qui noto che nella libreria ho lasciato b4a.example come package e non avrei dovuto farlo :) ma non dovrebbe essere questo il problema).

Quindi pare non esistere il metodo SQL.ExecNonQueryBatch, utilizzato dalla libreria suggetionsedittext, precisamente dal suo metodo addallasync. Ovviamente, come sapete, il metodo esiste eccome.

Beh, ho compilato ed eseguito il progetto di test che allegai insieme alla libreria pubblicata, con b4a 7.01, e funziona senza problemi. Il progetto, essendo appunto un esempio dell'utilizzo del custom view è davvero spartano, quasi vuoto.

Potrei porre la questione sul forum "internazionale" ma, a parte la scocciatura di doverlo spiegare in inglese :), temo che non otterrei risposte (il motivo è meglio che non lo spieghi... forse).


Tutto quanto sopra giusto per dire che l'ultima versione di B4A fa scherzi stupidi :D (e non so quanto saranno utilizzate le routine Lazzaro!).


P.S. E' probabile, benché strano, che potrei risolvere il problema ricompilando la libreria con B4A 7.01 (e magari lo farò presto per vedere se la cosa risolva); resta il fatto che non si capisce come non venga trovato il metodo ExecNonQueryBatch, visto che fa parte della libreria SQL originale.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Tutto quanto sopra giusto per dire che l'ultima versione di B4A fa scherzi stupidi
Oh, comunque, tornando in tema, la funzione Sleep inserita nella routine-evento Activity_Create manda in crash l'app perché Sleep restituisce temporaneamente il controllo alla routine che ha lanciato quella contenente questa funzione (Sleep) ma chi lancia Activity_Create?
 

Star-Dust

Expert
Licensed User
Longtime User
Leggermente OT ma visto quale fosse l'errore voglio "raccontarvi" una stranezza; riguarda un mio post in questo thread:

La mia libreria in questione è la SuggestionEditText (quindi una custom view).
La utilizzo nella mia famigerata app: né questa né la libreria contengono routine riesumabili, quindi né istruzioni Sleep né Wait For.
Compilando l'app con b4a 6.80, tutto ok; la compilazione con la 7.01 viene completata senza errori ma, a runtime, l'app va in crash ed il messaggio d'errore:

java.lang.NoSuchMethodError: anywheresoftware.b4a.sql.SQL.ExecNonQueryBatch
at b4a.example.suggestionsedittext._addallasync(suggestionsedittext.java:111)

(e qui noto che nella libreria ho lasciato b4a.example come package e non avrei dovuto farlo :) ma non dovrebbe essere questo il problema).

Quindi pare non esistere il metodo SQL.ExecNonQueryBatch, utilizzato dalla libreria suggetionsedittext, precisamente dal suo metodo addallasync. Ovviamente, come sapete, il metodo esiste eccome.

Beh, ho compilato ed eseguito il progetto di test che allegai insieme alla libreria pubblicata, con b4a 7.01, e funziona senza problemi. Il progetto, essendo appunto un esempio dell'utilizzo del custom view è davvero spartano, quasi vuoto.

Potrei porre la questione sul forum "internazionale" ma, a parte la scocciatura di doverlo spiegare in inglese :), temo che non otterrei risposte (il motivo è meglio che non lo spieghi... forse).


Tutto quanto sopra giusto per dire che l'ultima versione di B4A fa scherzi stupidi :D (e non so quanto saranno utilizzate le routine Lazzaro!).


P.S. E' probabile, benché strano, che potrei risolvere il problema ricompilando la libreria con B4A 7.01 (e magari lo farò presto per vedere se la cosa risolva); resta il fatto che non si capisce come non venga trovato il metodo ExecNonQueryBatch, visto che fa parte della libreria SQL originale.
La libreria compilata con / adesso funziona su 6.8?
 

LucaMs

Expert
Licensed User
Longtime User
Non ho capito perfettamente la domanda (colpa del fatto che vado per la terza età ed in terza media :p) ma sbrodolo tutto, così dovrei azzeccare la risposta :D.

La libreria fu compilata con la 6.80 ed è ancora così, non l'ho ricompilata (ma tra poco lo farò, giusto per vedere se tutto va a posto ma questo non soddisferebbe la mia "curiosità" di capirne il motivo).

Il progetto che testa la libreria funziona sia compilato con la 6.80 che con la 7.01.

La mia app funziona se compilata con la 6.80, va in crash segnalando quell'errore se compilata con la 7.01.
 

Star-Dust

Expert
Licensed User
Longtime User
Adesso è compilata con la 7.01
Le la passi a un povero disgraziato che ha la 6.5 funzionerà ?
 

LucaMs

Expert
Licensed User
Longtime User
Adesso è compilata con la 7.01
Le la passi a un povero disgraziato che ha la 6.5 funzionerà ?
No, era compilata con la 6.80. Dovrebbe funzionarti con la 6.5; non va?

E' anche molto probabile (stavo già per farlo una mezz'oretta fà) che io pubblichi anche il sorgente, soprattutto visto il sondaggio che ho aperto ieri ;)


P.S. "Oh, streghetta", che ho scritto? Mi stai chiedendo se funzionerebbe con la 6.50 e di passarti la libreria, ma l'avevo pubblicata! La trovi qui.
 

LucaMs

Expert
Licensed User
Longtime User
(e qui noto che nella libreria ho lasciato b4a.example come package e non avrei dovuto farlo :) ma non dovrebbe essere questo il problema).
Giusto per confermare, magari potrebbe capitare ad altri: cambiato package name il problema è rimasto (sparito dopo la compilazione con B4A 7.01 e questo rimane un mistero. Forse pubblicherò la domanda, malgrado tutto funzioni, ma non mi aspetto una risposta dall'unica persona che potrebbe replicare, ovvero Erel, quindi sarà tempo sprecato).
 

LucaMs

Expert
Licensed User
Longtime User
@AlpVir
questo sleep(0) mi è costato un sacco di tempo, leggi qui.
Semplicemente non vale la pena tentare di sostituire i DoEvents in app funzionanti.

Gli Sleep per aggiornare la GUI vanno utilizzati esclusivamente nelle routine-evento delle view, altrimenti restitiscono il controllo alle routine chiamanti e succede un casino.

Anzi, nemmeno in quelle routine, perché in quei casi funziona benissimo il DoEvents.
 
D

Deleted member 103

Guest
altrimenti restitiscono il controllo alle routine chiamanti e succede un casino.
Infatti, è proprio quello che è successo a me. :mad:
Adesso ho bannato dalla mia app tutti i sleep(0) e funziona tutto come prima.;)
 

Star-Dust

Expert
Licensed User
Longtime User
A questo punto usa la 6.80
 
D

Deleted member 103

Guest
Probabilmente, in alcuni casi, può essere utile il Wait For (ma se non sbaglio fino ad oggi siamo riusciti a fare a meno anche di questo).
Infatti, questa funzione è utile, ma la uso, per ora, in un solo caso.

A questo punto usa la 6.80
E no! Non vado mai indietro, ma sempre avanti, anche perchè ci sono sempre delle nuove funzioni, a parte sleep, che sono buone. ;)
 
Top