Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Out of Memory--nessuno sa come fare?
Forum - Visual Basic 6 - Out of Memory--nessuno sa come fare?

Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 0:29
Martedì, 06/01/2009
Salve a tutti, se tento di aprire in modalita binary un file di 301 MB (316.651.049 byte) con il seguente codice:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2. Dim file() As Byte
  3. Dim codefile As String
  4. Dim codearr() As String
  5. Open Text1.Text For Binary As #1
  6. ReDim file(0 To LOF(1))
  7. Get #1, , file
  8. codefile = StrConv(file, vbUnicode)
  9. codearr = Split(codefile, "PROVAPROVA")
  10. Close
  11. file = StrConv(codearr(2), vbFromUnicode)
  12. Close
  13. End Sub


Dove a text1.text e il percorso esatto del file di 300MB, il programma genera il seguente errore:

Run-Time error '7':

Out of Memory


evidenziando:
Codice sorgente - presumibilmente Plain Text

  1. codefile = StrConv(file, vbUnicode)


A me il contenuto del file serve prima trasformato in string per operare su di esso tramite la funzione split e poi riconvertire in byte.
Come posso evitare questo spiacevole inconveniente?..Grazie a tutti per l'attenzione:)

Ultima modifica effettuata da chen il 07/01/2009 alle 22:41
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 10:18
Martedì, 06/01/2009
L'errore che si verifica è perchè consumi tutta la ram nella tua operazione a causa della grossa quantità di dati...ora ho un pò di fretta appena posso ti spiego come risolvere...(p.s. Ho visto che te prelevi tutti i dati insieme in una variabile, invece devi prelevarli "un pò per volta")...

PM Quote
Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 12:51
Martedì, 06/01/2009
Ok, appena puoi o anche qualcun'altro se mi farebbe la cortesia di farmi un esempio :k:...io nel frattempo provo a bozzare qualcosa:k:...attendo!

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 19:43
Martedì, 06/01/2009
mmm...ho analizzato meglio il problema...ma questo mi sembra uno dei pochi problemi che non ho mai risolto e che a kiunque chiedessi nn mi ha risposto perchè nn lo sapeva...Dimmi prima una cosa in quella maniera, dopo quanto tempo ti apre il file?

PM Quote
Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 20:04
Martedì, 06/01/2009
Ma il file lo apre tranquillamente da problemi alla conversione del file da un string in byte!

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 20:56
Martedì, 06/01/2009
prova così:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2. Dim file() As string
  3. Dim codefile As String
  4. Dim codearr() As String
  5. Open Text1.Text For Binary As #1
  6. ReDim file(0 To LOF(1))
  7. file = input(lof(1), #1)
  8. codearr = Split(codefile, "PROVAPROVA")
  9. Close
  10. file = StrConv(codearr(2), vbFromUnicode)
  11. Close
  12. End Sub


PM Quote
Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 21:04
Martedì, 06/01/2009
A te funziona?..perche a me da un errore sempre "out of memory" ma ora sottolinea la line :
ReDim file(1 To LOF(1))

PM Quote