Italian Consigli per principiante

Brava Martina90 vedo che ti piace smanettare... bravi i ragazzi che ti aiutano... insomma bravi tutti.
 
Se, come dici, conosci bene il VB6, io ti consiglio di passare senz'altro a SQLite.
Puoi far un parallelo; quello con con ADO usualmente chiamavi Connection qui si chiama SQL
Code:
Dim dbIAH                  As SQL        ' come cnn del Microsoft ADO
da dichiararsi generalmente in Process_Globals
Quello che con ADO chiamavi recordset qui si chiama cursor.
Code:
Dim rs      As Cursor
da dichiararsi dove è necessario (anche in una Sub)
Il recordset lo popoli con una istruzione
Code:
rs = dbIAH.ExecQuery(Criterio)
Di diverso, in B4A, c'è l'istruzione Position
Code:
rs.Position = 33
senza la quale NON ti puoi posizionare al record N. 33 del recordset rs.
Poi ci sono i corrispondenti degli oggetti Command
Code:
dbIAH.ExecnonQuery(Criterio)
Non c'è AddNew, sostituito da una istruzione "INSERT INTO ..."
Se vuoi stringhe di lunghezza fissa puoi utilizzare la libreria StringFunction nella quale troverai moltissime istruzioni molto molto simili a quelle del VB6 (che Dio l'abbia in gloria e lo conservi nei nostri HD in secula seculorum).


Ottimo impegno, AlpVir, ma penso che non usasse db in vb6, solo il suo file binario.

I DB sono una rogna, "di G iamolo" :)
 
Esatto. Usavo i file binari. Sono sempre Martina ma per un discorso di account legato all'acquisto della licenza fatto con Paypal di mio zio ho dovuto prendere il suo nick. :-( Non so se ora si può tornare al mio nick vero ma penso di no. Pazienza.
Tornando al mio problema mi sto facendo aiutare a fatica da Erel (io non sono per niente brava in inglese). Per ora sono riuscita con un suo pezzo di codice a scrivere un piccolo file ma non riesco a trovare dove l'ha messo nell'S4 e non ho capito molto di quello che c'è, almeno non del tutto. Era tanto bello VB6 :-(
 
Esatto. Usavo i file binari. Sono sempre Martina ma per un discorso di account legato all'acquisto della licenza fatto con Paypal di mio zio ho dovuto prendere il suo nick. :-( Non so se ora si può tornare al mio nick vero ma penso di no. Pazienza.
Tornando al mio problema mi sto facendo aiutare a fatica da Erel (io non sono per niente brava in inglese). Per ora sono riuscita con un suo pezzo di codice a scrivere un piccolo file ma non riesco a trovare dove l'ha messo nell'S4 e non ho capito molto di quello che c'è, almeno non del tutto. Era tanto bello VB6 :-(

Non ho letto il codice di Erel, ma suppongo che tu lo possa trovare nella sd card (sdcard/android/data/nomeTuoPackage).

Vb6 era "bello", ma prova vb.net e poi mi dirai. Qui è tutto diverso per via di Android e mobile.

Semmai dovresti provare Windows 8 per phone... ma il mercato di windows in questo campo è ancora molto limitato (per fortuna?)

P.S. Martina90, 22 anni, quasi 23... come fà a conoscere vb6? no, no, non lo chiedo
 
Ti ringrazio ma a me non interessa la gestione dei DB, mi interessa la gestione dei file binari. Ho programmi fatti in VB6 sulla gestione dei tornei e del campionato di pallavolo e devo gestire gli stessi file generati condividendoli con il Samsung S4 e prossimamente con un tablet.
 
Spero che non s'arrabbi.

Sub WriteClarification(raf As RandomAccessFile, c As ClarificationType)
Dim b() As Byte = c.Name.GetBytes("ASCII")
raf.WriteBytes(b, 0, b.Length, raf.CurrentPosition)
for i = b.Length To 14
raf.WriteByte(0, raf.CurrentPosition)
Next
raf.WriteInt(c.Point, raf.CurrentPosition)
raf.WriteInt(c.Goal, raf.CurrentPosition)
End Sub


Questa è per scrivere un Type dove Name è lunga 15 caratteri, Point e Goal sono interi. Ovviamente lui qui ha messo Int ma io penso che per la compatibilità con gli archivi del VB6 devo mettere Short. O sbaglio :-)
 
Last edited:
Wowwwwww, ce l'ho fatta da sola cercando qua e la in giro per i post. Ora scrivo e leggo come volevo io. Certo che la comodità di scrivere e leggere un Type con una riga di codice me la scordo.
 
Sto diventando matta. Sto B4A fa proprio schifo. Ma com'è possibile?
Dichiaro due array di un tipo definito da me:

Dim ClaS(19) as Classifica ' Nuova classifica
Dim ClasVec(19) as Classifica ' Vecchia classifica

poi in una sub in base ai risultati aggiorno la ClaS facendo assegnazioni del tipo
ClaS(2).Punti=ClasVec(2).Punti+2

com'è possibile che prima di uscire dalla sub senza che sia stato assegnato un valore a ClasVec questo si ritrovi ad essere uguale a ClaS?
Cioè, in base all'assegnazione d'esempio fatta sopra se ClasVec(2).Punti valeva 24 dopo l'assegnazione ClaS(2).Punti dovrebbe essere 26 e ClasVec(2).Punti rimanere 24, invece mi ritrovo che anche ClasVec(2).Punti vale 26.

Non ditemi che non devo usare gli array ma le liste etc. etc. perché non ha senso. Il programma dovrebbe funzionare così.
 
Sto diventando matta. Sto B4A fa proprio schifo. Ma com'è possibile?
Dichiaro due array di un tipo definito da me:

Dim ClaS(19) as Classifica ' Nuova classifica
Dim ClasVec(19) as Classifica ' Vecchia classifica

poi in una sub in base ai risultati aggiorno la ClaS facendo assegnazioni del tipo
ClaS(2).Punti=ClasVec(2).Punti+2

com'è possibile che prima di uscire dalla sub senza che sia stato assegnato un valore a ClasVec questo si ritrovi ad essere uguale a ClaS?
Cioè, in base all'assegnazione d'esempio fatta sopra se ClasVec(2).Punti valeva 24 dopo l'assegnazione ClaS(2).Punti dovrebbe essere 26 e ClasVec(2).Punti rimanere 24, invece mi ritrovo che anche ClasVec(2).Punti vale 26.

Non ditemi che non devo usare gli array ma le liste etc. etc. perché non ha senso. Il programma dovrebbe funzionare così.

Mi viene da pensare a due variabili oggetto che abbiano lo stesso riferimento, ma non dovrebbe essere il tuo caso.

Intanto, ti consiglio di lanciare l'app in debug e, usando il tasto F8, esegui il sorgente una riga alla volta; quindi, passando il mouse sulle variabili, controlli il contenuto, il momento in cui cambiano il loro valore.
Poi, se "posti" (bleah, odio ste nuove parole) il codice della Sub, magari possiamo aiutarti di più.
 
Oh bella, ce n'è un'altra:
Come fa a non eseguirmi questa condizione:

if ..... then
else if claS(i).punti=claS(j).punti AND claS(i).SetPersi > claS(j).SetPersi then
codice da eseguire
end if

allora Clas(i).Punti=20, Clas(j).Punti=20, claS(i).SetPersi=18, claS(j).SetPersi=12 dovrebbe eseguire il codice, invece manco per niente. Ma robe da matti!
 
No, quest'ultima l'ho capita. E' sempre un pasticcio combinato dal primo problema posto.

SOLO PER PROVA (poi le togli), invece di fare assegnazioni con gli array (come ClaS(2).Punti=ClasVec(2).Punti+2), usa delle variabili.

Code:
varA = ClaS(2).Punti
log("varA = " & varA)
varB = ClasVec(2).Punti
log("varB = " & varB)
VarA = VarB + 2
log("varA = " & varA)



così, con F8 ed i log, segui meglio tutto
 
Niente, ho già perso troppo tempo. Sai cosa faccio? Invece di caricare la classifica vecchia una volta sola all'inizio la carico da file binario ogni volta che entro nella sub che fa la nuova classifica. Il discorso è che dentro questa sub ci si entra parecchie volte, pazienza, tanto lavora lo smartphone, mica io :-)
 
Niente, ho già perso troppo tempo. Sai cosa faccio? Invece di caricare la classifica vecchia una volta sola all'inizio la carico da file binario ogni volta che entro nella sub che fa la nuova classifica. Il discorso è che dentro questa sub ci si entra parecchie volte, pazienza, tanto lavora lo smartphone, mica io :)

Eh ma ti rallenta l'app. Vedi tu
 
Sì, ma non è che debba essere una scheggia. Comunque Lunedì scrivo una mini app con le caratteristiche uguali alla mia in modo che si veda l'errore presunto che fa lei o io.
 
Back
Top