AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm frisst speicher wenn nicht on top..
Thema durchsuchen
Ansicht
Themen-Optionen

Programm frisst speicher wenn nicht on top..

Ein Thema von SirThornberry · begonnen am 26. Feb 2004
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

Programm frisst speicher wenn nicht on top..

  Alt 26. Feb 2004, 18:45
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;
Angehängte Dateien
Dateityp: pas uposslider.pas (6,9 KB, 0x aufgerufen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:56 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