Einzelnen Beitrag anzeigen

Benutzerbild von creality
creality

Registriert seit: 14. Mai 2007
Ort: Double D Town
39 Beiträge
 
Delphi 2007 Professional
 
#1

BitBlt und Assign() - Exception?!

  Alt 24. Jan 2008, 07:09
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?
  Mit Zitat antworten Zitat