Italian Consigli per principiante

Martina90

Member
Ciao a tutti. Io sono bravina a programmare con VB6 e avevo realizzato un programma per la gestione del campionato di pallavolo della mia squadra con risultati e classifica. Ora ho la necessità di scrivere tutto per un tablet quindi ho pensato di provare a imparare qualcosa di basic4android. Prima però volevo avere un aiutino dai più esperti :)
In VB6 definivo un array delle squadre e ogni squadra era definita da un tipo (nome, giocate, vinte, perse, punti etc.) e i vari dati li salvavo in un file binary.
Quello che chiedo è se ci sono anche in Basic4Android i tipi di dati definiti dall'utente, gli array così come li conoscevo in VB6 e i file binary.
Grazie a chi mi illuminerà e un besito.
 

Martina90

Member
Grazie, è un inizio. Devo capire se posso fare una cosa del tipo:
Type squadra
nome as string * 20
giocate as integer
vinte as integer
perse as integer
etc.
End Type

e poi

Dim Squadre() as squadra
Redim Squadre(1 to 12)

lo so che pretendo troppo :) ma mi preme sapere se si può fare, sul come ovviamente mi darò da fare a studiare.
 

LucaMs

Expert
Licensed User
Longtime User
Ciao a tutti. Io sono bravina a programmare con VB6 e avevo realizzato un programma per la gestione del campionato di pallavolo della mia squadra con risultati e classifica. Ora ho la necessità di scrivere tutto per un tablet quindi ho pensato di provare a imparare qualcosa di basic4android. Prima però volevo avere un aiutino dai più esperti :)
In VB6 definivo un array delle squadre e ogni squadra era definita da un tipo (nome, giocate, vinte, perse, punti etc.) e i vari dati li salvavo in un file binary.
Quello che chiedo è se ci sono anche in Basic4Android i tipi di dati definiti dall'utente, gli array così come li conoscevo in VB6 e i file binary.
Grazie a chi mi illuminerà e un besito.

Ciao.

Immagino che tu non voglia ottenere cose sofisticatissime, ma un'app con funzione analoga a quella che hai sviluppato in VB6.
SQLite sarebbe l'ideale, per i db, ma per una sola tabella (come immagino fosse il tuo file binario) è una complicazione eccessiva.

Comunque, si, puoi creare array come in vb6, tipi e, meglio ancora, classi (simili ai tipi ma con la possibilità di inserire anche routine).

E' da tanto che non tocco VB6... credo che questo dovrebbe aiutarti: http://www.b4x.com/android/forum/threads/converting-vb6-to-b4a.9347/#content


Ciao

P.S. io non l'ho letto :p
 

Martina90

Member
Sto cominciando a prendere confidenza con il B4A ma poca, poca. Ieri me lo sono fatto acquistare da mio zio nella versione enterprise.
Finalmente con il vostro aiuto (Maxware soprattutto) sono riuscita a far andare il mio S4 via USB. Adesso ho questo problema:
Volevo provare a scrivere e leggere file di testo ma cominciando dalla scrittura mi sono già arenata. Definisco una variabile writer as textwriter e poi nell'Activity_Create la inizializzo
writer.Initialize(File.OpenOutput(File.DirRootExternal,"risultato.txt", False))
in Button1 metto writer.writeline(Button1.text)
A questo punto quando chiudo il debug mi aspetterei di ritrovare da qualche parte il file risultato.txt ma non lo trovo. Come mai? Così com'è dovrei ritrovarmelo sullo smartphone o sbaglio?
 

Martina90

Member
Mamma mia non riesco nemmeno a fare l'upload in ftp. Dove sbaglio?

Sub Process_Globals
Dim ftp1 As FTP
End Sub
Sub Globals
Dim writer As TextWriter
Dim reader As TextReader
Dim Button1 As Button
Dim Button2 As Button
Dim Srisu As String
Dim Label1 As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("tasti1")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Button1_Click
writer.Initialize(File.OpenOutput(File.DirRootExternal,"risultato.txt", False))
Srisu=Button1.Text
writer.WriteLine(Srisu)
writer.Close
Srisu=""
End Sub

Sub Button2_Click
reader.Initialize(File.OpenInput(File.DirRootExternal,"risultato.txt" ))
Srisu=reader.ReadLine
Label1.Text=Srisu
reader.Close
Risuftp (Srisu)
End Sub
Sub Risuftp(s As String)
ftp1.Initialize("ftp1", "ftp.*********.it",21, "**********", "***********")
ftp1.UploadFile(File.DirRootExternal, "risultato.txt", True,"/dati/risultato.txt")
ftp1.close
End Sub

Sub ftp1_UploadCompleted (ServerPath As String, Success As Boolean)
If Success=True Then
Msgbox("Ok upload a posto", "Mesaggio")
End If
End Sub
 

Martina90

Member
Uffa, mi rispondo da sola. Ho provato ad uploadarlo su un sito che ho su altervista e funziona ma nel sito Aruba che è quello che mi serve non va. Che non sia la @ nello username che gli da fastidio. Qualcuno di voi ha mai usato FTP su un server Aruba?
 

LucaMs

Expert
Licensed User
Longtime User
Agg
Uffa, mi rispondo da sola. Ho provato ad uploadarlo su un sito che ho su altervista e funziona ma nel sito Aruba che è quello che mi serve non va. Che non sia la @ nello username che gli da fastidio. Qualcuno di voi ha mai usato FTP su un server Aruba?


Non ti rispondi da sola. Se possiamo, ci diamo una mano.

I server Aruba vanno... Aruba (bleah che battutaccia, hehehe).

Non ho provato, ma tu hai già la conferma che nel tuo codice non ci sono errori, dato che su Altervista ti funziona;
quindi, è quasi certo che qualcosa non vada nello username e pw.

Ciao
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Martina
verifica questa cosa ..es. il mio sito su aruba e' www.mamosoftware.it e quando mi connetto con filezilla in ftp in root e' presente la cartella mamosofware.it dove dentro si sono i mie file. Quind iprova a mettere al posto di
/dati/risultato.txt
la striga
mamosofware.it/dati/risultato.txt
ovviamente mamosoftware.it e' riferito al mio sito
ciaoo
Mamo
 

Martina90

Member
Ora mi prendo una giornata di festa e da lunedì inizierò a bisticciare con i file binari :) e poi vorrei trovare il modo di gestire bene gli sliding panel.
 

maxware

Well-Known Member
Licensed User
Longtime User
ciao Martina ..ti riscrivo quello scritto nell'altro post ..
..................................
Ciao Martina ..pensa in grande... perche' limitarsi al solo pallavolo o ai risultati..
pensa un app per tutti gli appassionati di sport amatoriale , calcio , pallavolo , gestire i risultati ma non solo ,,gestire i giocatori con le schede e foto e magari nelle schede metti l'ultima visita sportiva e tanto altro ..secondo me fai un giro nello store di google e cerca se esiste un qualcosa del genere
ciaoo
Mamo
 

LucaMs

Expert
Licensed User
Longtime User
ciao Martina ..ti riscrivo quello scritto nell'altro post ..
..................................
Ciao Martina ..pensa in grande... perche' limitarsi al solo pallavolo o ai risultati..
pensa un app per tutti gli appassionati di sport amatoriale , calcio , pallavolo , gestire i risultati ma non solo ,,gestire i giocatori con le schede e foto e magari nelle schede metti l'ultima visita sportiva e tanto altro ..secondo me fai un giro nello store di google e cerca se esiste un qualcosa del genere
ciaoo
Mamo


Esiste già tutto, maremma hane :)

uhm... un'app con i numeri di telefono di tutti gli sportivi ricchi, forse... no, la scaricherebbero solo le veline
 

Martina90

Member
Eccomi. Sto litigando con i file binari e avrei proprio bisogno che qualcuno mi spiegasse dove vengono messi i file che scrivo (usando l'emulatore).
Cioè: DirRootExternal, DirInternal, DirDefaultExternal e DirAssets dove sono?

Ancora una cosa. In VB6 definivo un Type con, per esempio, queste definizioni:
Type Classifica
Squadra as string * 20
Punti as Integer
...
...
etc.
End Type
Ecco, in B4A come faccio a definire una striscia a lunghezza fissa? E' possibile? A me serve perché così posso salvare in un file binario più velocemente ed efficacemente senza dover gestire situazioni contorte e anche perché tutta la gestione andrebbe fatta su file esistenti con quella struttura.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Eccomi. Sto litigando con i file binari e avrei proprio bisogno che qualcuno mi spiegasse dove vengono messi i file che scrivo (usando l'emulatore).
Cioè: DirRootExternal, DirInternal, DirDefaultExternal e DirAssets dove sono?

Ancora una cosa. In VB6 definivo un Type con, per esempio, queste definizioni:
Type Classifica
Squadra as string * 20
Punti as Integer
...
...
etc.
End Type
Ecco, in B4A come faccio a definire una striscia a lunghezza fissa? E' possibile? A me serve perché così posso salvare in un file binario più velocemente ed efficacemente senza dover gestire situazioni contorte e anche perché tutta la gestione andrebbe fatta su file esistenti con quella struttura.


La DirRootExternal è la... root, cioè la radice, quella che su windows è c:/.

Internal, la memoria interna del dispositivo;

External, la scheda SD o altro esterno

DirAssets è invece particolare: non puoi scriverci (dal programma in esecuzione); puoi, anzi, dovresti, metterci i file "accessori" della tua app, tramite la tab "Files" in basso a destra nell'editor.

Per la stringa a lunghezza fissa, non mi risulta, purtroppo. Certo che, visto che stai studiando, io proverei SQLite, una incollatina di un esempio ed hai quasi risolto! Basta che cerchi nel sito "SQLite Tutorial"... oppure prendi questo esempio che ho postato io, così lo testi anche e mi dici se ti funziona :).

(ovvio che dico questo ANCHE perché in SQLite puoi avere campi di lunghezza fissa).

Ciao
 

AlpVir

Well-Known Member
Licensed User
Longtime User
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
B4X:
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.
B4X:
Dim rs      As Cursor
da dichiararsi dove è necessario (anche in una Sub)
Il recordset lo popoli con una istruzione
B4X:
rs = dbIAH.ExecQuery(Criterio)
Di diverso, in B4A, c'è l'istruzione Position
B4X:
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
B4X:
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).
 
Top