Autor Beitrag
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Mi 22.10.08 10:19 
Hallo,

kann mir jemand bitte einen Tip geben, wie ich prüfen kann, ob das Handle eines gegebenen Canvas Objekts gültig ist. Das ganze sollte nicht viel Zeit in Anspruch nehmen un den Canvas selbst nicht verändern (also nichts mit: zeichne halt einfach mal drauf und fang die Exception ab).

Danke,
Ulrich
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 22.10.08 10:58 
So spontan frage ich mich erstmal woher du ein ungültiges Canvas-Handle bekommen kannst. Denn eigentlich würde ich vermuten, dass sich die Gültigkeit an dieser Stelle auch herausfinden ließe.

Die andere Frage ist, wo du dein Handle danach benutzt und was dann für ein Fehler kommt.

Eine Möglichkeit für eine solche Prüfung kenne ich erstmal nicht, ich werde aber kurz nachschauen was ich dazu finde.
uko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Mi 22.10.08 11:13 
Woher das ungültige Handle kommt, würde mich auch interessieren. :-) Was passiert ist Folgendes:
Eine TBitmap32 (aus Graphics32 Bibliothek) - Instanz übergibt ihren Canvas.Handle an die Zeichenroutine eines externen COM-Objekts (Ink-Renderer), das auf den Canvas zeichnen soll. Tut es auf meinen Testsystemen ja auch immer Probleme. Nur bei manchen Kunden wirft nun genau der Aufruf der Zeichenroutine einen Fehler:

exception class : EOleException
exception message : The handle is invalid.

Und nun würde ich gerne irgendwie prüfen, ob das übergebene Handle schon ungültig ist oder ob es etwas anderes innerhalb des COM Objekts ist.


Grüße,
Ulrich