Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm frisst speicher wenn nicht on top.. (https://www.delphipraxis.net/16997-programm-frisst-speicher-wenn-nicht-top.html)

SirThornberry 26. Feb 2004 19:45


Programm frisst speicher wenn nicht on top..
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab schon wieder nen Problem,

mein Programm (Musiksoftware) frisst aus irgend einem grund Speicher (Taskmanager Spalte: Speicherauslastung) allerdings nur wenn es nicht im Fordergrund ist. aller halben Sekunden zeichne ich auf die Canvas um den Fortschritsbalken des Liedes zu aktuallisieren und im gleichen Interval erhöht sich die Speicherauslastung. Wenn Mein Programm dann in den Vordergrund geholt wird, wird der Speicher wieder freigegeben. Ich vermute irgendwie das Wenn auf die Canvas nicht gezeichnet werden kann das Irgendwie "gecacht" wird und wenn dann die canvas wieder ontop ist wird das alles nachgeholt. Allerdings spricht dagegen, dass der speicherverbrauch auch zunimmt wenn mein Programm (und die Positionbar) sichtbar sind aber zum Beispiel der Taskmanager on Top ist. Hat irgend jemand ne Idee woran das liegen könnte?? Könnt auch eure unwahrscheinlichsten Theorien posten, vielleicht ist ja grad das unwahrscheinlichste die lösung

Source aus der Komponente wo ich den Fehler vermute
Delphi-Quellcode:
var LDC: HDC;
    LCount: Integer;
    LBlendFactor: Byte;
    LToPos: Integer;
    Lrect: TRect;
    LColor: Tcolor;
begin
  LDC := GetDC(handle);
  if LDC <> 0 then
  begin
    fCanvas.Handle := LDC;
    fCanvas.Brush.Color := color;
    LColor := GetBlendColor(color, fBlendColor, 0, 20);
    Lrect := fCanvas.ClipRect;
    if MaxPosition = 0 then LToPos := ClientWidth else
    LToPos := ClientWidth * Position div MaxPosition;

    lrect.Left := LToPos + 1;
    fCanvas.FillRect(LRect);
    for LCount := 0 to LToPos do
    begin
      LBlendFactor := LCount * 255 div ClientWidth;
      fCanvas.Pen.Color := GetBlendColor(LColor, fBlendColor, LBlendFactor);
      fCanvas.MoveTo(LCount, 0);
      fCanvas.LineTo(LCount, ClientHeight);
    end;
    ReleaseDC(handle, LDC);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz