AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Allmähliches Out-of-Resources-gehen bei Assign

Allmähliches Out-of-Resources-gehen bei Assign

Ein Thema von simlei · begonnen am 23. Okt 2007 · letzter Beitrag vom 23. Okt 2007
Antwort Antwort
simlei

Registriert seit: 23. Nov 2005
119 Beiträge
 
Delphi 7 Professional
 
#1

Allmähliches Out-of-Resources-gehen bei Assign

  Alt 23. Okt 2007, 22:50
Hio, ich hab n kleines Probleemchen:
Ich hab ein Bild das ich normalerweise Zeichne aus eben einer Zusammensetzung von Rects und Lines, und einem Rechteck, das darübergelegt wird. Das Bild außer dem Rechteck verändert sich nicht so oft, deswegen habe ich einen Parameter, der bestimmt, ob das Bild neu gezeichnet werden muss oder nicht ("neueAnsicht"). Wenn er true ist, wird das Bild normal neu gezeichnet und dann das Rechteck (ein Rahmen) darüber. Wenn false, dann wird das unter dem Rahmen ligenede Bild aus einer Bitmap geladen und das Rechteck darüber gezeichnet, was ja erheblich schneller geht als neu zeichnen (deshalb wirds gemacht).
Seit ich jedoch diese Bitmap drinnen habe, geht es eien Weil egut, dann zeichnet das Bild sich langsamer (neuzeichnen wird durch Mouseover ausgelöst, deshalb passiert das ziemlich oft, der Rahmen soll aber auch durch die Maus bewegt werden, deshalb unumgänglich) und irgenwann gibts nen OutOfResources-Error! Deutet alles auf ein Speicherleck hin

so nun finde ich es aber nicht... hier der Code, danke schonmal wer sich kurz darein fudelt und sich das ansieht:
PS: In meinen Versuchen habe ich das Bild nur 1x neugezeichnet - ganz am Anfang. Also wurde das "Grundbild" immer geladen und dann drübergezeichnet - bis irgendwann der Fehler kam.

Delphi-Quellcode:
    //Zeichnen der Werte -Wenn Bedarf besteht.
    If neueAnsicht Then
    begin
     For i := roundedIndexBegin To roundedIndexEnde do
     begin
       X := Round( (i-roundedIndexBegin-verhaeltnisBeginn) * massstabX);
       Y := Round( friedmanresults[i]*massstabY );
       drawBalken( X, innerImageHoehe, Y, balkenstaerke, RGB(205, 205, 205), RGB(130, 130, 130), RGB(225, 10, 45), kappenstaerke, innerIMG, false);

       innerIMG.Canvas.Pen.Color := RGB(70, 200, 0);
       If (i-roundedIndexBegin) mod abstandText = 0 Then outerIMG.Canvas.TextOut(X+balkenstaerke div 2, outerImageHoehe-marginBottom+3, IntToStr(i-roundedIndexBegin+1));

       If i<roundedIndexEnde Then
       begin
        XNext := Round( ((i+1)-roundedIndexBegin-verhaeltnisBeginn) * massstabX);
        YNext := Round( friedmanresults[i+1]*massstabY );

        drawLine(X+balkenstaerke, innerImageHoehe-Y, XNext, innerImageHoehe-YNext, RGB(180, 180, 180), innerIMG);
       end;
     end;
     saveInnerBitmap.Assign(innerIMG);
     saveOuterBitmap.Assign(outerIMG);
    end
    //Wenn kein Grund zum Neuzeichnen besteht kann das Bild hier aus einer alten Bitmap geladen werden.
    else
    begin
     innerIMG.Assign(saveInnerBitmap);
     outerIMG.Assign(saveOuterBitmap);
    end;

    //Zeichnen des Rechtecks
    ImageFriedmanAnalyse.Cursor := crDefault;
    If ( mouseX > marginLeft ) And ( mouseY < innerImageHoehe-marginBottom ) And ( mouseX <> -1 ) And ( mouseY <> -1 ) Then
    begin
      innerIMG.Canvas.Brush.Style := bsClear;

      widthZoomRect := Round(zoomValue*innerIMG.Width);
      XZoomRect := mouseX-widthZoomRect div 2 - marginLeft;
      if XZoomRect < 0 Then XZoomRect := 0;
      if XZoomRect > innerIMG.Width-widthZoomRect Then XZoomRect := innerIMG.Width-widthZoomRect;

      innerIMG.Canvas.Pen.Color := RGB(30, 40, 90);
      innerIMG.Canvas.Rectangle(XZoomRect, 0, XZoomRect+widthZoomRect, innerImageHoehe);
      innerIMG.Canvas.Brush.Style := bsSolid;

      removedZoomRect := false;
    end;

    //Zuweisen der Bilder auf ein TImage.

    //Zeichnen des Bildes MIT Rechteck (Rahmen) auf ein TImage
    ImageFriedmanAnalyse.Canvas.Draw(0, 0, outerIMG);
    ImageFriedmanAnalyse.Canvas.Draw(marginLeft, 0, innerIMG);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Allmähliches Out-of-Resources-gehen bei Assign

  Alt 23. Okt 2007, 23:02
Zwei Fragen:
Wo und wann wird das Bitmap erstellt und wo und wann wird es wieder freigegeben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
simlei

Registriert seit: 23. Nov 2005
119 Beiträge
 
Delphi 7 Professional
 
#3

Re: Allmähliches Out-of-Resources-gehen bei Assign

  Alt 23. Okt 2007, 23:05
Die Bitmaps innerIMG und outerIMG werden in der Prozedur erstellt ... und dort auch freigegeb... !!! aah!
verdammt sie werden nicht freigegeben
*schäm*

wo kann ich den thread löschen und meinen kopf in den Sand stecken?
€: danke
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Allmähliches Out-of-Resources-gehen bei Assign

  Alt 23. Okt 2007, 23:06
Quod erat expectandum
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Allmähliches Out-of-Resources-gehen bei Assign

  Alt 23. Okt 2007, 23:09
Zitat von simlei:
wo kann ich den thread löschen und meinen kopf in den Sand stecken?€: danke
Der Thread bleibt als ewiges Mahnmal, seinen Hausaufgaben vor dem Posten zu machen, für ewig erhalten und der Sandkasten ist aus der Forumstür raus und dann links hinten im Hof, da wo die Leute alle ihre Hintern in den Himmel recken. Wenn du fertig bis, mach bitte das Loch wieder zu, andere wollen ihren Kopf auch noch wo reinstecken können. Man dankt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz