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

Meglio, cmq, perché così mollo sto pc e vado finalmente a colazionare (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 .
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.
 

luciano deri

Active Member
Licensed User
Longtime User
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.
 

Picena Informatica

Active Member
Licensed User
Longtime User
Codice stretto, con cui l'applicazione appare come bloccata al s.o.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…