Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler in der Delphi-Hilfe? (https://www.delphipraxis.net/3177-fehler-der-delphi-hilfe.html)

lodda 27. Feb 2003 09:43


Fehler in der Delphi-Hilfe?
 
Hallo

ich habe gestern das Beispiel zu TCanvas.CopyRect aus der Delphi-Hilfe ausprobiert. Da trat ein EInvalidOp Error auf. Die Fehlermeldung hieß Canvas/Leinwand erlaubt kein zeichnen. Jetzt frage ich mich ob andere das Problem auch haben, oder ob ich was falsch gemacht habe.

sakura 27. Feb 2003 10:41

Poste mal den Code, da sich die Hilfe teilweise zwischen Delphi-Version unterscheidet.

...:cat:...

lodda 27. Feb 2003 11:36

Der Code geht ungefähr so:

Delphi-Quellcode:
...
  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile('BlaBla');
  MyRect := Rect(0,0,100,100);
  MyOther := Rect(140,0,100,100); //oder so
  Image1.Canvas.CopyRect(MyRect, Bitmap.Canvas, MyRect);
  Image1.Canvas.CopyRect(MyOther, Bitmap.Canvas, MyOther);
  ...
Ich sitze gerade vor einem Rechner ohne Delphi und weiß es deshalb nicht mehr genau. Aber so in etwa sah der Code aus.

Helld_River 27. Feb 2003 13:32

HI !
Die Fehlermeldung "Canvas/Leinwand erlaubt kein zeichnen" kommt, zumindest bei mir, wenn der Speicher voll ist. D.h. wenn ich viel herumdebugged habe und viel getestet habe, dann räumt er bei mir den Speicher nicht mehr vernünftig auf.
Um den Rechner nicht jedesmal neu starten zu müssen, habe ich mir bei
www.tmedia.de
deren Editor heruntergeladen, welcher einen klasse RamDefragmentierer enthält !!!

Hoffe, es hilft dir weiter !!!!

Gruß, Helld

lodda 27. Feb 2003 14:09

Zitat:

Zitat von Helld_River
HI !
Die Fehlermeldung "Canvas/Leinwand erlaubt kein zeichnen" kommt, zumindest bei mir, wenn der Speicher voll ist.

Daran kann es bei mir nicht liegen. Die Speicherauslastung war sogar sehr niedrig.

janjan 27. Feb 2003 14:35

Mit der Fehlermeldung "Canvas/Leinwand erlaubt kein zeichnen" hab ich vor kurzem auch Bekanntschaft gemacht. Bei mir lag es daran, dass zwei Routinen gleichzeitig auf ein Canvas gemalt haben. Um sicher zu gehen das du malen darfst, solltest du sowas hier benutzen:

Delphi-Quellcode:
with Canvas do
  if lockcount=0 then
    begin
      Lock;
      Brush.Color:=clLime;
      Canvas.Ellipse(10,20,20,40);
      Unlock;
    end; // lockcount = 0
wenn Lockcount <> 0 ist, dann führt ein zeichnen auf diesem Canvas zu einem Fehler, bei 0 kann man gefahrlos rummalen. Mit Lock und Unlock kannste der/die/das Canvas für dich reservieren und freigeben. Dabei sollte man immer an das freigeben denken, ansonsten gibts Probleme.


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