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

luciano deri

Active Member
Licensed User
Longtime User
Dopo tanto "commenta e prova" forse ho trovato il problema. In un ciclo
For i = 0 To dbCursor.RowCount - 1
dbCursor.position = i
doevents
...
per disegnare una tabella la variabile i non era stata definita.
La sub in questione era chiamata dentro un edittext_enterpressed, il programma schiantava all'uscita della sub chiamante.
Aggiungendo dim i = int prima del ciclo for e
togliendo il DoEvents il problema sembra risolto
Il log filtrato non segnava niente, di seguito il log non filtrato da dove mi sembra iniziasse il problema.
DCD OFF

Window spent 25225.9ms processing the last input event:

Fatal signal 11 (SIGSEGV) at 0x0000000c (code=1), thread 1685 (iscoapp.rilinve)

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

Build fingerprint: 'samsung/matisseltexx/matisselte:4.4.2/KOT49H/T535XXU1ANK1:user/release-keys'

Revision: '3'

pid: 1685, tid: 1685, name: iscoapp.rilinve >>> it.multidatanet.siscoapp.rilinve <<<

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c

r0 00000000 r1 bef38a80 r2 bef390f3 r3 00000040
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
No, nemmeno quello (benché ogni volta che lo cito, Erel mi risponda che non è bene "bloccare" l'esecuzione del Main thread, quindi non mettere lunghi cicli al suo interno).

Cmq, no, non è quello.

Puoi farmi capire A BLOCCHI il flusso dell'app e dove si blocca?
 

LucaMs

Expert
Licensed User
Longtime User
Ah, usa molto i log, soprattutto all'inizio delle routine; questo ti aiuta molto a trovare i bug.

Certo, potresti usarli meglio e velocemente grazie al mio tool AddLogs, ma non voglio fargli pubblicità :p
puoi inserirli anche a mano (benché AddLogs faccia il log anche dei parametri delle routine)
 

luciano deri

Active Member
Licensed User
Longtime User
Ho riprovato anche ora è il problema è il DoEvent, ho mandato una mail a Klaus con il sorgente e vediamo che dice. Il flusso è semplice ho due edit text, una di code e una di quantità e sotto una tabella disegna con la seguente sub. Accetto il codice e la quantità premo enter sulla quantità il programma scrive il record sul DB e ridisegna la griglia chiamando la sub tutto bene. C'è la particolarità del lettore di codici a barre bluetooth in emulazione tastiera. Mi trasmette & - CODICE ARTICOLO - enter.
Quindi nell'etqta_enterpressed se intercetto la & il codice letto diventa il valore della edit del codice, la qta diventa 1 e segue, scrive il DB, chiama la sub per ridisegnare la tabella e nell'end_sub di etqta_enterpressed schianta. In questo caso dentro etqta_enterpressed ci sono alcuni passaggi in più, ma niente di trascendentale e soprattutto nulla che mettesse in crisi Android 3.0.2 e 4.1.2
Con il breack point sull'end_sub vedo che comunque la griglia è disegnata bene.
Togliendo il DoEvents] va che è un piacere, ma poi a che serve DoEvents
B4X:
Sub PopolaScrollview
    swelenco.Panel.RemoveAllViews
  
    strquery = "SELECT inventario.id, inventario.codrag, inventario.codart, articoli.descrizione, inventario.qta, inventario.flg_elimina FROM inventario LEFT JOIN articoli ON inventario.codart = articoli.codart WHERE inventario.codrag ='" & etcodrag.Text & "' ORDER BY inventario.id DESC "
    dbCursor = Main.dbSql.ExecQuery(strquery)
    NumRighe = dbCursor.RowCount
    For i = 0 To dbCursor.RowCount - 1
        DoEvent
        dbCursor.position = i
      
        pnl.Initialize("Pelenco")
        swelenco.Panel.AddView(pnl, 0, i * PH, 100%x, PH)
        pnl.LoadLayout("LRigaRilInve")
      
        pnl.Tag = dbCursor.GetInt("inventario.id")
        lbcodice.Text = dbCursor.GetString("inventario.codart")
        lbdesc.Text = dbCursor.GetString("articoli.descrizione")
        If lbdesc.Text = Null Or lbdesc.Text = "null" Then
            lbdesc.Text = ""
        End If
        lbqta.Text = dbCursor.GetString("inventario.qta")
        If lbqta.Text = "" Or lbqta.Text = " " Then
            lbqta.Text = 0
        End If      
     Next
End Sub

P.S. Ho scaricato e installato AddLogs, e adesso?
 

LucaMs

Expert
Licensed User
Longtime User
Il doevents ti consente di "rinfrescare" la parte grafica dell'activity (aggiornarla).

Mi fa piacere che ti fidi più di Klaus che di me :p.

Meglio, cmq, perché così mollo sto pc e vado finalmente a colazionare :D (mio "neologismo" logicissimo: se pranzo->pranzare, ceno-> cenare, colazione-> colazionare :))
 

luciano deri

Active Member
Licensed User
Longtime User
Il doevents ti consente di "rinfrescare" la parte grafica dell'activity (aggiornarla).
Ma, farà anche caldo, ma senza la parte grafica mi sembra abbastanza fresca.
Mi fa piacere che ti fidi più di Klaus che di me :p.
Ho scritto le stesse cose che ho scritto qua, ma nel mio inglese cacciuccato,... sai le mie opinioni sulla forza del gruppo.
P.S. Buona colazione e grazie.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
PAROLAMIX e' FINITOO!!!!!!!!!!!!!!

Scaricatevelo dallo store o cliccate qui:

https://play.google.com/store/apps/details?id=com.Parolamix_Android

ParolamixGrande.jpg
 

luciano deri

Active Member
Licensed User
Longtime User
Il doevents ti consente di "rinfrescare" la parte grafica dell'activity (aggiornarla).

Mi fa piacere che ti fidi più di Klaus che di me :p.

Meglio, cmq, perché così mollo sto pc e vado finalmente a colazionare :D (mio "neologismo" logicissimo: se pranzo->pranzare, ceno-> cenare, colazione-> colazionare :))
Klaus ha risposto, tradotto in italiano corrente: se Commentando DoEvents funziona lascialo commentato. Della serie "Dottore se mi tocco il braccio mi fa male", "La cura è: non toccarlo".
 

Picena Informatica

Active Member
Licensed User
Longtime User
Se non sbaglio (MA solo sul tempo) Erel ricordava che un loop o altro codice stretto non può durare più di 5 secondi.
 
Top