Arbeitsspeicher seltsamerweise voll

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mabox

Betreff: Arbeitsspeicher seltsamerweise voll

BeitragMo, Jan 05, 2009 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ein Programm, welches seltsamerweise sehr viel Arbeisspeicher benötigt. Es werden ganz viele Bilder nacheinander ins Programm geladen, aber direkt danach wieder gelöscht. Trotzdem braucht das Programm bei 1000 Bildern ca 1.3 GB Arbeitsspeicher. Was ist der Fehler in dem Programm?

Code: [AUSKLAPPEN]
Function bilder_einlesen(dir$)
   Local rd = ReadDir(dir$)
   NextFile(rd)
   Local nxf$ = NextFile(rd)
   While nxf$ <> ""
      nxf$ = NextFile(rd)
      If nxf$ <> "" Then
            If Instr(nxf$,".jpg") Then
               gesamt = 0
               img = LoadImage(dir$+"\"+nxf$)
               If img <> 0 Then
                  If ImageWidth(img) > ImageHeight(img) Then
                     breite = breite_hauptbild#/anz_bilder_horiz
                     hoehe = hoehe_hauptbild#/anz_bilder_vert
                     ResizeImage img,breite,hoehe ;bild verkleinern
                     
                     SetBuffer ImageBuffer(img)
                     For y = 0 To hoehe-1
                        For x = 0 To breite-1
                           rgb = ReadPixel(x, y)
                           r = (rgb And $FF0000) / $10000
                           g = (rgb And $FF00) / $100
                           b = rgb And $FF
                           gesamt = gesamt + Int ((0.299*r) + (0.587*g) + (0.114*b))
                        Next
                     Next
                     
                     FreeImage img

                     ;WERTE SPEICHERN
                     If datei = 0 Then RuntimeError "Info.sav nicht gefunden!"
                     WriteByte datei,gesamt / (breite * hoehe)
                     WriteLine datei,dir$+"\"+nxf$
                     ;/WERTE SPEICHERN            

                  EndIf
               EndIf
            EndIf
         EndIf
      EndIf
   Wend
End Function
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
  • Zuletzt bearbeitet von mabox am Mo, Jan 05, 2009 19:28, insgesamt 2-mal bearbeitet
 

haubna

BeitragMo, Jan 05, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was ist dein Problem?
Bei was soll dir geholfen werden?
erkläre das bitte auch wenn du hilfe brauchst

Snade

BeitragMo, Jan 05, 2009 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Koennte es sein das BB bzw. dein Computer die Bilder nichts schnell genug loescht wenn z.B. wenn man im Papierlorb ganz viel loescht braucht der auch eine weile!

mabox

BeitragMo, Jan 05, 2009 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist eigentlich schon aus dem Titel erkennbar......Ich will den Das das Programm wie oben beschrieben läuft, aber nicht so viel Speicher verbraucht.

@Snade nein ich denke daran liegt es nicht, FreeImage ist ja im Programm eingebaut und theoretisch arbeitet ein Programm alle Befehle Nacheinander ab Wink
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Snade

BeitragMo, Jan 05, 2009 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
ja aber wartet FreeImage mit dem abarbeiten auch bis ein bild geloescht ist also

Bild1
loeschen Bild1
Bild2
loeschen Bild2

oder

Bild1
Bild2
loeschen Bild1
loeschen Bild2

mabox

BeitragMo, Jan 05, 2009 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke es wartet, außerdem ist löschen glaub ich schneller als laden und es werden ja dauernd neue Bilder geladen, deshalb müsste das alte Bild auf jeden Fall gelöscht sein wenn das neue geladen ist.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

The_Nici

BeitragMo, Jan 05, 2009 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Snade, wtf, das Bild wird aus dem Speicher gelöscht, und das RAM ist deutlich schneller als die Harddisk.

Achja, vielleicht wäre CloseDir() Noch nützlich. Wink

Holzchopf

Meisterpacker

BeitragMo, Jan 05, 2009 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm FreeImage aus dem
Code: [AUSKLAPPEN]
If ImageWidth(img) > ImageHeight(img) Then

-Block raus
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

mabox

BeitragMo, Jan 05, 2009 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert!, Danke!
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group