C Claudio57 Member Licensed User Longtime User Nov 26, 2013 #1 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
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 Dec 5, 2013 #21 Se guardi nell'esempio che ho allegato #16, nella funzione: Code: Copy Public Sub ReadTeamData(TeamID As Int) As clsTeam trovi come leggere uno Short: Team.Goals è definito come Short (2 bytes): Code: Copy 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
Se guardi nell'esempio che ho allegato #16, nella funzione: Code: Copy Public Sub ReadTeamData(TeamID As Int) As clsTeam trovi come leggere uno Short: Team.Goals è definito come Short (2 bytes): Code: Copy 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.
C Claudio57 Member Licensed User Longtime User Dec 5, 2013 #22 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
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.
C Claudio57 Member Licensed User Longtime User Dec 5, 2013 #23 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 prova.txt 19 bytes · Views: 321 Upvote 0
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.
stevel05 Expert Licensed User Longtime User Dec 5, 2013 #24 You probably just need to set LittleEndian within the byteconverter. Upvote 0
C Claudio57 Member Licensed User Longtime User Dec 5, 2013 #25 YESSSSSSSSSSSSSSSSSSSSSSSS! Thank you very much Steve!!! Now it works. Upvote 0
LucaMs Expert Licensed User Longtime User Dec 5, 2013 #26 Claudio57 said: 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. Click to expand... Ok, provo, ma sei sicuro che siano scritti bene? ah, non avevo visto la risposta precedente. Upvote 0
Claudio57 said: 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. Click to expand... Ok, provo, ma sei sicuro che siano scritti bene? ah, non avevo visto la risposta precedente.
C Claudio57 Member Licensed User Longtime User Dec 9, 2013 #28 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
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.
LucaMs Expert Licensed User Longtime User Dec 9, 2013 #29 Claudio57 said: 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. Click to expand... 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 said: 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. Click to expand... 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.
C Claudio57 Member Licensed User Longtime User Dec 9, 2013 #30 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
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.
LucaMs Expert Licensed User Longtime User Dec 9, 2013 #31 Claudio57 said: 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. Click to expand... Eh si, avevo capito. In realtà la crea, ma non la vedi. Prova, dopo la creazione, a usare File.Exists Upvote 0
Claudio57 said: 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. Click to expand... Eh si, avevo capito. In realtà la crea, ma non la vedi. Prova, dopo la creazione, a usare File.Exists
C Claudio57 Member Licensed User Longtime User Dec 9, 2013 #32 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
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! :-(
LucaMs Expert Licensed User Longtime User Dec 9, 2013 #33 Claudio57 said: 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! :-( Click to expand... uhm va beh che sono stanco... ma ti avevo capit(?) Io ho usato: Code: Copy 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 said: 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! :-( Click to expand... uhm va beh che sono stanco... ma ti avevo capit(?) Io ho usato: Code: Copy 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'è
C Claudio57 Member Licensed User Longtime User Dec 9, 2013 #34 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
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?
LucaMs Expert Licensed User Longtime User Dec 9, 2013 #35 Claudio57 said: 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? Click to expand... SICURAMENTE! Meglio che tu faccia così: Code: Copy If File.ExternalWritable Then ' CREI LA CARTELLA CON FILE.DirDefaultExternal Else ' CREI LA CARTELLA CON FILE.DirInternal End If Upvote 0
Claudio57 said: 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? Click to expand... SICURAMENTE! Meglio che tu faccia così: Code: Copy If File.ExternalWritable Then ' CREI LA CARTELLA CON FILE.DirDefaultExternal Else ' CREI LA CARTELLA CON FILE.DirInternal End If
C Claudio57 Member Licensed User Longtime User Dec 9, 2013 #36 Finalmente. Ci sono riuscita grazie al tuo aiuto. Upvote 0
LucaMs Expert Licensed User Longtime User Dec 9, 2013 #37 Claudio57 said: Finalmente. Ci sono riuscita grazie al tuo aiuto. Click to expand... Prego. Tanto aspetto il giorno in cui ricambierai Upvote 0
Claudio57 said: Finalmente. Ci sono riuscita grazie al tuo aiuto. Click to expand... Prego. Tanto aspetto il giorno in cui ricambierai