Italian Problema apertura file grandi dimensioni

nicolino33

Active Member
Licensed User
Longtime User
Ciao ragazzi, posto qui il problema perché probabilmente nel forum inglese Erel non ha molta pazienza e chiude i post senza motivo, il concetto che ho esposto nel forum è molto chiaro: esiste un modo per aprire file di grandi dimensioni allo scopo di modificare alcuni byte per criptarli? il problema sorge quando tento di leggere ad esempio un video, se il file supera i 30 mega o giù di li l'applicazione restituisce un out of memory. Il codice che da problemi con file grandi è il seguente: Result() as Byte = Bit.InputStreamToBytes(File.OpenInput(Dir ,NomeFile)), premetto che con file sotto i 30 mega funziona.
 

Star-Dust

Expert
Licensed User
Longtime User
@nicolino33, Erel ti ha chiesto di aprire un altro Thread con il titolo che corrispona alla domanda.
Questo serve per future ricerche. Se qualcuno cercasse OutOfMemory identificherebbe subito il thread dal titolo e non deve entrare in un Thread che sembri che parli di tutt'altro.

Il thread che parlava della Camera deve contenere informazioni su quell'argomento, risposto alla domanda principale apri un altro thread per altre domande.

Probabilmente devi avere più pazienza e seguire le regole del forum :D
 

nicolino33

Active Member
Licensed User
Longtime User
No non credo proprio, ti consiglio di leggere con attenzione le sue risposte, il tono… il modo… la domanda era molto chiara e semplice, ed esposta nei limiti della correttezza, quindi vediamo di non mettere fango nella bocca della gente. Non c'era alcuna necessità di aprire un altro post, il termine OU OF MEMORY era chiaramente visibile e rintracciabile.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
E' normale che se tenti di leggere un file grosso e non c'è abbastanza memoria esca un bel OUT OF MEMORY
Devi quindi cambiare approccio e leggere il file a blocchi invece che leggerlo tutto.
Ad esempio puoi definire dei blocchi da 10MB (o quello che vuoi tu) ed a ogni blocco leggerlo, criptarlo e scriverlo su di un altro file, poi leggi un altro blocco, lo crittografi e lo scrivi, e prosegui così fino alla fine del file.

C'è però una cosa: se crittografando un blocco risulta che il blocco crittografato ha ancora le stesse dimensioni del blocco originale il tutto funziona senza problemi, se invece ricavi un blocco di dimensioni diverse allora la cosa è un po' più difficile, perchè quando andrai a scrivere il blocco sul nuovo file dovrai anche fare dei marker per segnalare quanto grande è il blocco, altrimenti poi quando andrai a rileggerlo non riuscirai più a capire quanto grande è il blocco e quindi non riuscirai a decrittografarlo correttamente

per ulteriori info chiedi pure
 

nicolino33

Active Member
Licensed User
Longtime User
Grazie Sir, sei stato molto chiaro ed esaudiente, però la domanda benchè magari a voi banale a me sorge spontanea perché non ho mai avuto modo di leggere a blocchi, quale comando o set di istruzioni si utilizza? a me la prima cosa che viene in mente è

B4X:
Dim in As InputStream = File.OpenInput(dir, filename)
Dim Dati() as byte = in.ReadBytes(buffer, 0, i byte che voglio leggere)

però se cosi fosse ho già sperimentato, ed il problema dell'out of memory si presenta anche quando lancio la prima riga di codice dell'openinput.
 

nicolino33

Active Member
Licensed User
Longtime User
Dai Luca non temere, appena ho finito il lavoro ti do il link sul play store…. e poi capirete che le 4 domande messe in croce che posto ogni tanto sono proprio poche rispetto all'opera che ho fatto :) Poi a a me piace leggere, ma da tanto che ho letto e che sto studiando ho perso un diottria quindi un mano è ben gradita ;D
 

LucaMs

Expert
Licensed User
Longtime User
Oh, comunque Erel non aveva torto, in quanto tu hai prima scritto di ricevere quel messaggio nel creare un video usando Camera, poi hai aggiunto:

"The problem of out of memory is in all method to read file, not only camera, for example if I read file over 30MB with file.openinput I'v the same error"

e

"Another question: is..."

Quindi ti ha risposto che per nuove domande dovresti aprire un nuovo thread (anche se il messaggio d'errore è quello, puoi riceverlo per tanti motivi diveri e l'argomento principale era quello del tuo primo post, la ripresa di un video).




il termine OU OF MEMORY era chiaramente visibile
Non esattamente; il titolo era "OUT OF MEORY" :p
 

nicolino33

Active Member
Licensed User
Longtime User
Sul fatto del nuovo th per il discorso huawei va bene, ma per il resto non sono molto d'accordo, più che altro per il modo che ha di porsi molto irritante, credo che questo sia un forum di gente colta ed educata, e tutti sappiamo bene che la programmazione è un brutto mestiere, e prima di intraprendere certe azioni ed assumere certi atteggiamenti (tra l'altro ripetuti anche in altri post) bisognerebbe pensarci due volte.
 

nicolino33

Active Member
Licensed User
Longtime User
decisamente brusco e a tratti anche prepotente direi, ma sorvoliamo, tra l'altro sarei anche un suo cliente :) Ne prenderà atto spero...
 
Top