
ashman (Normal User)
Pro
    
Messaggi: 71
Iscritto: 03/10/2009
|
ciao un programma che ho creato è stato fatto apposta per andare in loop e a continuare a fare operazioni, il problema è che dopo un po il probramma si ferma dandomi un errore strano, cioè memoria virtuale insufficiente (se non vado errando)
c'è un operazione che mi permette di continuare il mio loop senza dovere interrompere il programma?? qualchosa che mi resetti la memoria e continui le varie operazioni
- le variabili all interno dell loop si salvano ogni volta su un block note e vengono ricaricate ogni volta ho fatto cosi per evitare problemi come questo in cui sono costretto a fermarmi senza sapere dove sono arrivato
- il programma non va in loop eterno in quanto cliccando su un altro pulsante il loop si ferma
- il problema si verifica penso intorno a 20-30 minuti di loop no arriva a 2 ore o cose mastodontiche
grazie a tutti ^^
se avete funzioni per superare il problema ve ne sarei grato poi se perdo le variabili trovero il modo per superare questo problema ( considerando che le ho in un blocknote il problema sta solo a inserire nel giusto spazio il codice)
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Bisogna capire cosa fai nel loop perche' quell'errore indica che sono presenti memory leak ... e devi rimediare correggendo il codice, non in altro modo ...
|
|

ashman (Normal User)
Pro
    
Messaggi: 71
Iscritto: 03/10/2009
|
memory leak sarebbe??? io apro salvo e elimino in un giro di loop 1 blok note nel quale ci sono delle variabili eccetto cio non ci sono variabili che si aumentano tipo x=x+1 mandare in loop tramite do while i < 100 (e non incrementare mai la i crea questo fenomeno?)
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da ashman:
memory leak sarebbe??? io apro salvo e elimino in un giro di loop 1 blok note nel quale ci sono delle variabili eccetto cio non ci sono variabili che si aumentano tipo x=x+1 mandare in loop tramite do while i < 100 (e non incrementare mai la i crea questo fenomeno?)
|
Metti qualche virgola quando scrivi, altrimenti manca il fiato e non si capisce nulla ...
Non ho capito cosa fai ... ma e' difficile postare il codice? Cosi' ci capiamo meglio ... |
|

aazzarone (Normal User)
Newbie
    
Messaggi: 11
Iscritto: 03/10/2009
|
Si ha un memory leak quando non si provvede alla deallocazione di variabili non più utilizzate...
|
|

ashman (Normal User)
Pro
    
Messaggi: 71
Iscritto: 03/10/2009
|
Postato originariamente da aazzarone:
Si ha un memory leak quando non si provvede alla deallocazione di variabili non più utilizzate... |
come si fa a deallocare le variabili????
il codice eccolo:
Dim codx As codes
Dim aaa(1 To 10) As Integer
Dim bbb(1 To 10) As String * 1
Dim ii As Integer
Dim xxx As String * 8
aaa(1) = 0
aaa(2) = 1
aaa(3) = 2
aaa(4) = 3
aaa(5) = 4
aaa(6) = 5
aaa(7) = 6
aaa(8) = 7
aaa(9) = 8
aaa(10) = 9
bbb(1) = "a"
bbb(2) = "b"
bbb(3) = "c"
bbb(4) = "d"
bbb(5) = "e"
bbb(6) = "f"
bbb(7) = "g"
bbb(8) = "h"
bbb(9) = "i"
bbb(10) = "l"
codx.a = 1
codx.b = 1
codx.c = 1
codx.d = 1
codx.e = 1
codx.f = 1
codx.g = 1
codx.h = 1
ii = 1
Open "indici.dat" For Random As #1 Len = Len(codx)
Get #1, 1, codx
Close #1
Do While ii <= 100
Kill "indici.dat"
Open "indici.dat" For Random As #1 Len = Len(codx)
Put #1, 1, codx
Close #1
wb.Navigate ("www.google.it"
DoEvents
Do Until Not wb.Busy
DoEvents
Loop
If codx.a = 11 Then
codx.a = 1
codx.b = codx.b + 1
End If
If codx.b = 11 Then
codx.b = 1
codx.c = codx.c + 1
End If
If codx.c = 11 Then
codx.c = 1
codx.d = codx.d + 1
End If
If codx.d = 11 Then
codx.d = 1
codx.e = codx.e + 1
End If
If codx.e = 11 Then
codx.e = 1
codx.f = codx.f + 1
End If
If codx.f = 11 Then
codx.f = 1
codx.g = codx.g + 1
End If
If codx.g = 11 Then
codx.g = 1
codx.h = codx.h + 1
End If
If codx.h = 11 Then
codx.h = 1
End If
xxx = Trim(bbb(codx.a)) + Trim(Str(aaa(codx.b))) + Trim(Str(aaa(codx.c))) + Trim(Str(aaa(codx.d))) + Trim(bbb(codx.e)) + Trim(bbb(codx.f)) + Trim(bbb(codx.g)) + Trim(bbb(codx.h))
'MsgBox (xxx)
'ii = ii + 1 'LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOP
codx.a = codx.a + 1
wb.Document.Forms(0).CODE0.Value = Trim(xxx)
DoEvents
wb.Document.Forms(0).submit
DoEvents
Do Until Not wb.Busy
DoEvents
Loop
tentativi.Caption = xxx
If stop_c.Value = 1 Then
ii = 101
MsgBox ("bom")
End If
Loop
End Sub |
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Cosa dire ...
Ma che dovrebbe fare questo insieme di istruzioni ?
|
|

ashman (Normal User)
Pro
    
Messaggi: 71
Iscritto: 03/10/2009
|
cercare un codice sempre diverso...
il problema è k le variabili mi servono tutte se non esiste la possibilita di resettare la memoria si puo volendo dare delle istruzioni che riaprano il medesimo programma e clicchino le varie impostazioni e che poi lo faccia partire chiudendo il programma di partenza....
mannaggia a vb un problema del genere non me lo aspettavo.. e soprattutto non mi aspettavo che non esissero soluzioni
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da ashman:
cercare un codice sempre diverso... |
Per cosa ? Cercare un codice per fare che ?
mannaggia a vb un problema del genere non me lo aspettavo.. e soprattutto non mi aspettavo che non esissero soluzioni |
Guarda che il problema non e' ancora chiaro e tanto meno le cause. Sul fatto che non ci siano soluzioni, non l'ho mai detto ... Devo ancora "riprodurre" il tuo stesso problema ...
Ma PRIMA voglio capire a COSA dovrebbe servire questo tuo programma ... anche perche' mancano pezzi ... Cosa e' "codes" in
Dim codx As codes
|
|