Delphi7: tbitmap.canvas.handle = 0 -- delphi campo con handle camp Relacionados El problema

Delphi7: TBitmap.Canvas.Handle = 0


0
vote

problema

Español

Estoy enfrentando este problema durante mucho tiempo, y no he encontrado nada que pueda ayudarme a resolverlo. Utilizo un TBITMAP para recibir datos provenientes de una cámara (Stream) y luego guarde la imagen en el disco. A veces se produce una excepción. Después de varias pruebas, encontré la falla: la propiedad de la manija del lienzo de TBITMAP con valor 0. Para evitar este problema, cuando detecté este valor 0 en el asa, reinicie la aplicación (destruya y vuelva a crear el TBITMAP no funcionó), pero a veces Este error se produce con frecuencia. ¿Alguien ha tenido un problema como este? ¿Qué podría estar haciendo mal? Cualquier ayuda es bienvenida. Gracias.

Original en ingles

I am facing this problem for a long time, and have not found anything that could help me solve it. I use a TBitmap to receive data coming from a camera (stream) and then save the image to disk. Sometimes an exception occurs. After several tests I found the flaw: The handle property of the TBitmap's Canvas with value 0. To bypass this problem, when I detect this value 0 in the handle, restart the application (destroy and recreate the TBitmap did not work), but sometimes this error occurs frequently. Has anyone had a problem like this? What could I be doing wrong? Any help is welcome. Thank you.

     
         
         

Lista de respuestas

-1
 
vote

TBITMAP utiliza internamente un objeto de envoltura de tbitmapcanvas para tbitmap.canvas. Si tiene acceso a la fuente (gráficos.pas), debe tener un vistazo. Las posibilidades son una o más llamadas WINAPI GDI, no manejen el valor de retorno en caso de un error. Algunas llamadas GDI tienen una oportunidad muy delgada de fallar, por lo que es un poco de juego dejar de lado revisar cada valor devuelto para obtener un poco de rendimiento, pero en los casos de carga alta, estos pueden ser los primeros indicadores de que las cosas se equivocarán. de todos modos.

Le sugiero que intente usar los DCU de la depuración para pasar por su programa usando TBITMAP.CANVAS, enumere las llamadas GDI que se utilizan para hacer que las cosas funcionen, luego codifiquen estas operaciones que compruebe los valores devueltos y maneje correctamente los errores. Esto debería permitirle averiguar más lo que está sucediendo cuando la conexión con la cámara está fallando, y probablemente disminuirá parte de la sobrecarga que tiene de usar TBITMAP.

 

TBitmap internally uses a TBitmapCanvas wrapper object for TBitmap.Canvas. If you have access to the source (Graphics.pas) you should have a look. Chances are one or more WinAPI GDI calls don't handle the return value in case of an error. Some GDI calls have a very slim chance of failing, so it's somewhat of a gamble to leave out checking each and every returned value to gain a bit of performance, but in cases of high load these may be the first indicators that things will go wrong anyway.

I suggest you try use the debug DCU's to step through your program using TBitmap.Canvas, list the GDI calls that are used to make things work, then code these operations checking the returned values and handling any errors correctly. This should enable you to find out more what is going on when the connection to the camera is failing, and probably will decrease some of the overhead you have from using TBitmap.

 
 

Relacionados problema

1  Obtenga un proceso de icono de HWND, nombre de proceso u otro identificador de proceso  ( Get icon process from hwnd process name or other process identifier ) 
Tengo el nombre del proceso y la manija (HWND) de su ventana. Quiero ahora para obtener el icono relativo (si está disponible) . Buscando a través de MSDN,...

1  C # - Acceso denegado al intentar obtener el manejo del proceso  ( C sharp access denied when trying to get processs handle ) 
Estoy tratando de obtener el manejo de un proceso, pero recibo un error que dice "Acceso denegado". Aquí está mi código: namespace Program { public par...

3  ¿Cómo captar la excepción del servicio WCF remoto?  ( How to catch exception from remote wcf service ) 
Después de agregar la referencia de Visual Studio UI, inicializé al cliente: private WcfRequestProcessorClient _client; var binding = new BasicHttpBinding...

0  Cambiando adecuadamente los parámetros del control deslizante AJAX MULTHANDLE en las devoluciones postbacks  ( Properly changing ajax multihandle slider parameters on postbacks ) 
En vs2010 tengo páginas de vb.net codebehind aspx y estoy usando las extensiones de Ajax MultiHandelesLider para filtrar los resultados de búsqueda en valores...

2  JQUERY Slider ¿Cómo puedo encerrar un mango en su lugar?  ( Jquery slider how do i lock a handle in place ) 
Tengo un control deslizante jQuery con dos asas. Estoy buscando bloquear el primero en su lugar en función del segundo asa. He intentado verificar los valor...

0  MATLAB - ¿Puedo hacer que mi asa el objeto se comporte como un asa de gráficos?  ( Matlab can i make my handle object behave like a graphics handle ) 
con asas de gráficos, puede hacer esto: >> a = nan(1,5) a = NaN NaN NaN NaN NaN >> a(3) = line([1 2],[1 2]) a = NaN NaN 0.004...

10  Delphi: Compruebe si el archivo está en uso  ( Delphi check whether file is in use ) 
Quiero escribir / eliminar un archivo, pero a veces recibo un choque si el archivo está en uso por otro programa. ¿Cómo verifico ver si el archivo está abiert...

20  ¿Cómo puedo recuperar un producto específico en Shopify Liquid?  ( How do i retrieve a specific product in shopify liquid ) 
Tengo una lista de asas de productos, y quiero buscar el producto en función de este asa. Parece que no hay forma de decirle que el líquido vaya y obtenga un ...

1  Leyendo texto en una etiqueta de diferentes aplicaciones  ( Reading text in a label from different application ) 
Tengo una aplicación trabajando en mi PC. Puedo obtener todos los detalles de esa aplicación (Mango, MainWindowHandle, etc.) y esa aplicación tiene muchas e...

1  Obteniendo una instancia de control de Windows (ventana de diálogo) por su asa  ( Geting an instance of windows control dialog window by its handle ) 
Llamé a algunas ventanas de diálogo en Delphi. Estoy tratando de obtener la referencia a ella, que encuentre un problema. Esos controles no son VCL, por lo qu...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos