Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi BitBlt und Assign() - Exception?! (https://www.delphipraxis.net/107209-bitblt-und-assign-exception.html)

creality 24. Jan 2008 07:09


BitBlt und Assign() - Exception?!
 
Hallo Leute,

folgendes Problem: In einem Thread läuft immer nur diese Funktion ab:
Delphi-Quellcode:
procedure TRefresh_2.Execute;
begin
  with FWorkImage do
  begin
    PixelFormat := pf8bit;
    Width := Image1.Width;
    Height := Image1.Height;
  end;
  //
  // LOOP starts here...
  //
  while not Self.Terminated do
  begin
    try
      BitBlt(FWorkImage.Canvas.Handle,
        0,
        0,
        Image1.Width,
        Image1.Height,
        Image1.Canvas.Handle,
        0,
        0,
        SRCCOPY);
      Synchronize(Sync);
      Sleep(20);
    except
      raise Exception.Create('EXECUTE Counter at: ' + IntToStr(FCounter));
    end;
  end;
end;

procedure TRefresh_2.Sync;
begin
  try
    Inc(FCounter);
    FImage.Assign(FWorkImage);
  except
    raise Exception.Create('SYNC Counter at: ' + IntToStr(FCounter));
  end;
end;
Das Hauptprogramm startet einfach nur den Thread und hat 2 TBitmaps welche beide an den Thread übergeben werden (Image1 und FImage).

Das Programm läuft und läuft...solange man die Maus nicht bewegt oder die GUI resized. Dann knallts mit der Exception: Nicht genügend Speicher verfügbar.

Jemand eine Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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