hej!! Hej jag har hört att man om uppdaterar de här filerna kommer det inte att bli fel igen ... Igen alltså det är samma problem ... kan ingen hjläpa mig ... Hej Om jag var du skulle jag först och främst ta reda på om det verkligen är ett minnesfel du får genom att kontrollera i aktivitetshanteraren hur mycket minne processen till din applikation tar upp. Om du ser att det växer kraftigt och blir onormalt hög minnesanvändning kan du antagligen vara säker på att det är något i din koden som genererar enormt mycket minnesanvändning. alltså jag kommer att bli galen av detta problemet ... jag har provat alla lösningar som microsoft har på sin hemsida när man stötter på detta problemet ... och jag får det inte att funka Hej igen kan man skriva detta: jag misstänker att det kan vara från databasen som jag har ... Hej jag har löst problemet ... yesyesyesout of memory
jag har gjort ett program i vb som funkar utmärkt ... det enda problemet är att efter ett tag som man kör programmet kommer ett felmeddelande som säger att det inte finns ledigt minne ... jag har 512Mb Ram-minne, så det kan inte vara felet på minnet ...
kan nån vara snäll och nämna de flesta och vanligaste fel som programmerare gör som programmet tar hela minnet ...??
Tack så hemskt mycket!Sv: out of memory
Har du någon kod i tex någon Text_Change eller någon
annan kontrolls Change Event.
Har du någen Subrutin som gör sk rekursivt anrop ?
undrar
SvenSv: out of memory
Riched32.dll
OleAut32.dll
är det sant?? ... hur kan man hitta de??
MVHSv: out of memory
Du bör ha servicepack 5 för VB 6 kan hämtas här
http://www.pellesoft.nu/login/sysdoc/servpacks.asp
DSSv: out of memory
jag kör winsock (som kan hantera mer än en klient), databas och timer i programmet ...Sv: out of memory
Hur skall man kunna det när man inte ser någon kode.
Du måste lägga in en Errorhandler som med msgbox
meddelar var i kedjan det händer.
Om du har någon hint om var det händer
kan du först i den Sub/Funktion lägga in ett
On Error GoTo memoryError
' Här ligger all din misstänkta kod
' Lägg in detta i alla SubRutiner
SubOk:
Exit Sub
memoryError:
MsgBox "Det blev fel i Sub bla bla bla"
On Error Goto 0
Resume SubOk
End SubSv: out of memory
MEN det behöver inte vara det som orsakar problemet. Det kan vara exempelvis vara problem med ActiveX-kontroller. Jag har själv stött på problemet med "Out of memory" i samband med användningen av FM20.dll (Microsoft Forms 2.0).
Gör en sökning på webben på det felnummer som visas i samband med felet och se ifall det har och göra med något annat än rena källkoden. You never know what you might find!!!!Sv: out of memory
jag har kollat hur mycket minne mitt program tar och det är inte alls så mycket .. och även när det händer det problemet så har inte minnet minskat eller höjt .... så det kan inte vara på minnet .. tror jag i alla fall
och det med var i texten problemet ligger i kan jag inte heller veta ... det vissar olika hela tiden ... jag har laggt On Error GoTo er över nästan hela min kod ... :)
snälla nån hjälp ...!!Sv: out of memory
1. Har du någon okontrollerad loop i programmet
dvs du har en loop som ha som vilkor att loopen
skall gå tills vilkoret är uppfyllt.
Do untill minvariabel = 0 tex ,om den aldrig blir 0
så susar det ju på i evighet, bör vara minvariabel < 0
Du skriver att du har en Timer , den koden är misstänkt
ge dig inte
Sven
Sv: out of memory
<code>
Private Sub sckHost_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error GoTo er
sckHost(sckHost.UBound).Close
txt_stats.Text = sckHost(sckHost.UBound).State
sckHost(sckHost.UBound).Accept requestID
Load sckHost(sckHost.UBound + 1)
With sckHost(sckHost.UBound)
.LocalPort = 5555
.Listen
End With
If sckHost(sckHost.UBound).State = sckOutOfMemory Then
MsgBox "out of memory, kick kick kick", vbOKOnly
Dim Client As Integer
For Client = 0 To sckHost.UBound
sckHost(Client).Close
Next Client
With sckHost(Index)
.Close
.LocalPort = 5555
.Listen
End With
End If
er:
End Sub
</code>
är detta rätt
<code>
sckHost(sckHost.UBound).Close
txt_stats.Text = sckHost(sckHost.UBound).State
sckHost(sckHost.UBound).Accept requestID
</code>
eller ska det vara
<code>
sckHost(Index).Close
txt_stats.Text = sckHost(Index).State
sckHost(Index).Accept requestID
</code>
Vad är skillnad ???
MVHSv: out of memory
koden är:
först när man öppnar programmet så laddas textboxen från databasen:
<code>
Private Sub Form_Load()
databas.OpenRec "select * from Man" & txt_mon.Text - 1
While Not Recordset.EOF
txt_totigar.Text = Recordset("Total")
txt_totmon.Text = Recordset("Total_mon")
Recordset.MoveNext
Wend
databas.CloseRec
End Sub
</code>
och sen när man stänger programmet så sparas informationen i databasen:
<code>
Private Sub Form_Unload(Cancel As Integer)
databas.OpenRec "select * from Man" & txt_mon.Text - 1
Recordset.AddNew
Recordset.Fields("Dag") = txt_dag.Text
Recordset.Fields("Datorer") = txt_dator.Text
Recordset.Fields("Ovrigt") = txt_ovr.Text
Recordset.Fields("Total") = txt_tot.Text
Recordset.Fields("Total_mon") = txt_totmon.Text
Recordset.Fields("Skillnad") = txt_skil.Text
Recordset.Update
databas.CloseRec
End Sub
</code>
och när jag ska öppna informtionen som finns i databasen genom att välja i en combobox:
<code>
Private Sub Combo1_Click()
lst_dag.Clear
lst_dator.Clear
lst_ovr.Clear
lst_tot.Clear
lst_skil.Clear
lbl_totmon.Caption = ""
databas.OpenRec "select * from Man" & Combo1.ListIndex
While Not Recordset.EOF
lbl_totmon.Caption = Recordset("Total_mon") & " kr"
If lst_dag.ListCount < 37 And lst_dator.ListCount < 37 And lst_ovr.ListCount < 37 And lst_tot.ListCount < 37 And lst_skil.ListCount < 37 Then
lst_dag.AddItem Recordset("Dag") & " kr"
lst_dator.AddItem Recordset("Datorer") & " kr"
lst_ovr.AddItem Recordset("Ovrigt") & " kr"
lst_tot.AddItem Recordset("Total") & " kr"
lst_skil.AddItem Recordset("Skillnad") & " kr"
End If
Recordset.MoveNext
Wend
databas.CloseRec
End Sub
</code>
och för att ta bort en databas tabell:
<code>
databas.OpenRec "DELETE FROM Man" & Combo1.ListIndex
</code>
kan nån se om det finns fel ...???
JAG VILL TACKA ALLA SOM HAR HJÄLPT MIG OCH SVARAT PÅ MINA SVAR I DENNA INLÄGG .... TACK SÅ HEMSKT MYCKET !!
MVHSv: out of memory
Kliade i mina programmerings fingrar när jag såg din kod.
Så här skulle jag skriva
Do Until Recordset.EOF
txt_totigar.Text = Recordset("Total")
txt_totmon.Text = Recordset("Total_mon")
Recordset.MoveNext
Loop
databas.CloseRec
Detta är ju helmysko varför skall TextBoxarn fladdras genom
i en loop .? Varför inte istället skriva
If Recordset.EOF Then
txt_totigar.Text = Recordset("Total")
txt_totmon.Text = Recordset("Total_mon")
Else
Recordset.MoveLast
txt_totigar.Text = Recordset("Total")
txt_totmon.Text = Recordset("Total_mon")
End if
Eller ännu bättre varför inte koppla TextBoxarna direkt
till sina respektive Fält ?
Do Until Recordset.EOF
lbl_totmon.Caption = Recordset("Total_mon") & " kr"
If lst_dag.ListCount < 37 Then
If lst_dator.ListCount < 37 Then
If lst_ovr.ListCount < 37 Then
If lst_tot.ListCount < 37 Then
If lst_skil.ListCount < 37 Then
lst_dag.AddItem Recordset("Dag") & " kr"
lst_dator.AddItem Recordset("Datorer") & " kr"
lst_ovr.AddItem Recordset("Ovrigt") & " kr"
lst_tot.AddItem Recordset("Total") & " kr"
lst_skil.AddItem Recordset("Skillnad") & " kr"
End If
End If
End If
End If
End If
Recordset.MoveNext
Loop
Varför : Jo om ditt första If är False så finns dert ingen anledning
att kolla de andra alternativen.
Sen när man ser det på detta vis kommer frågan
kan det hända att de övriga ListBoxarna är > 37 när
lst_dag.ListCount < 37 (den första) ? ?
Ta det på rätt sätt , detta är inget "besserwisser " inlägg
mvh
SvenSv: out of memory
den har varit på i två dagar utan fel .. äntligen ... wow
jag vill bara tacka SvenPon och alla andra som har svarat och försökt hjälpa mig ... tack
problemet var i winsock .. jag provade en annan variant som jag hittade på internet och det funkar perfekt .. jag ska när jag har tid lägga det i "Tips & tricks" ....
tack till alla igen...peace