Android Question String in to binary file

Claudio57

Member
Licensed User
Longtime User
I'm new in B4A. I was pretty good at VB6.
I have a problem with binary files.
I can't write a string to a binary file.
I can't find a method to write a string.
How to?

Martina
 

LucaMs

Expert
Licensed User
Longtime User
Se guardi nell'esempio che ho allegato #16, nella funzione:

B4X:
Public Sub ReadTeamData(TeamID As Int) As clsTeam

trovi come leggere uno Short: Team.Goals è definito come Short (2 bytes):

B4X:
 Dim arrBytes(2) As Byte
          CurrPos = CurrPos + mRAFile.ReadBytes(arrBytes, 0, 2, CurrPos)
          Team.Goals = mByteConverter.ShortsFromBytes(arrBytes)(0)

Dato che era solo un esempio, non ho scritto l'analoga funzione per scrivere 2 bytes, ma ti basta usare mRAFile.WriteBytes
nello stesso modo.
 
Upvote 0

Claudio57

Member
Licensed User
Longtime User
Guarda che ho visto ma non sono riuscita a leggere da un file scritto in VB6 nel senso che ciò che avevo scritto come Integer non riesco a tirarlo fuori. Mi viene un valore 256 volte più grande. Cioè se avevo scritto 2 mi legge 512 se avevo scritto 10 mi legge 2560 etc.. Il discorso è che voglio poter leggere e scrivere in modo tale che i file possano essere gestiti sia da PC Windows che da Smartphone o Tablet che dir si voglia.
 
Upvote 0

Claudio57

Member
Licensed User
Longtime User
Allego un file binario scritto in VB in cui la stringa è "STRINGAPERPROVA" mentre i due valori sono short (78 e 19).
Prova a leggerli se riesci a tirare fuori quei valori.
 

Attachments

  • prova.txt
    19 bytes · Views: 155
Upvote 0

Claudio57

Member
Licensed User
Longtime User
Ciao Luca. Se leggi volevo chiederti una cosa: nell'esempio che mi hai mandato succede che quando lo testo su Smartphone mi crea la cartella relativa al tuo package e la sottocartella "files" dove mette il file binario. Perché io non riesco a fare la stessa cosa ma non mi crea la cartella col nome del mio package? Non so se sono stata chiara... boh? Dimmi tu.
 
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
Ciao Luca. Se leggi volevo chiederti una cosa: nell'esempio che mi hai mandato succede che quando lo testo su Smartphone mi crea la cartella relativa al tuo package e la sottocartella "files" dove mette il file binario. Perché io non riesco a fare la stessa cosa ma non mi crea la cartella col nome del mio package? Non so se sono stata chiara... boh? Dimmi tu.

Sei stata chiara, ma... non lo so nemmeno io!
O meglio, usando quelle istruzioni, crea sicuramente la cartella Files in quella del package, solo che, per qualche strano motivo, non si vede!
Ci sto pensando in questo momento... prova a spegnere e riaccendere lo Smartphone.

Se guardi i file da pc, cioè col doppio click su "Computer" e cerchi la dir, magari non la trovi. Se apri Eclipse si vede, invece.
 
Upvote 0

Claudio57

Member
Licensed User
Longtime User
No, non intendevo quello. Intendevo che io quando testo il mio programma non mi crea una cartella mentre il tuo sì. Io voglio che anche il mio crei la cartella ma non ci riesco.
 
Upvote 0

Claudio57

Member
Licensed User
Longtime User
No a me non la crea, non so perché. In Android\Data la tua cartella c'è (b4a.lucams.campoionato) invece la mia, cioè quella del programma che si chiama GesD con package name "cap.gesd.com" che ho fatto io non c'è. Uffa! :-(
 
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
No a me non la crea, non so perché. In Android\Data la tua cartella c'è (b4a.lucams.campoionato) invece la mia, cioè quella del programma che si chiama GesD con package name "cap.gesd.com" che ho fatto io non c'è. Uffa! :-(

uhm va beh che sono stanco... ma ti avevo capit(?) :)

Io ho usato:

B4X:
mRAFile.Initialize(mDir, mFileName, False)

per aprire il file, dove:

mDir sarà impostato con File.DirDefaultExternal
mFileName con "Team.txt"

Tutto qua.

Hai provato a usare File.Exists(File.DirDefaultExternal, NomeTuoFileBinario) ? Perché, come ho scritto, magari non la vedi ma c'è
 
Upvote 0

Claudio57

Member
Licensed User
Longtime User
Allora, il mio programma scrive dei file e io li faccio scrivere nella rootexternal. Può essere questo il motivo per cui non crea la cartella del mio programma?
 
Upvote 0
Top