Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2007
modulay modulay is offline
Miembro
 
Registrado: feb 2006
Posts: 46
Poder: 0
modulay Va por buen camino
Runtime error relacionado con Canvas

Ando usando un componente visual que emula un lcd alfanumérico,en concreto se llama rasterlabel

http://www.lohninger.com/examples_part3.html

En mi aplicación,actualizo el texto que dicho componente muestra de una forma bastante intensiva,coincidiendo con eventos de ratón producidos sobre otros controles del form.El tema es que todo marcha bien,pero muy de vez en cuando me tira el siguiente error:

http://img250.imageshack.us/my.php?image=canvasab6.jpg

La rutina encargada de actualizar el contenido del componente (del cual hay 4 instancias: clcd1linea1,clcd1linea2,clcd2linea1,clcd2linea2) es esta:

Código Delphi [-]
procedure TForm1.actualizaclcd(const linea,pos,dimension: integer; const cad: string);

var
    cadlcd1,cadlcd2,cadaux : string;
    i : integer;
begin

    if linea = 1 then begin
       cadlcd1 := Copy(clcd1linea1.text, 0, length(clcd1linea1.Text));
       cadlcd2 := Copy(clcd2linea1.text, 0, length(clcd2linea1.Text));
    end
    else begin
       cadlcd1 := Copy(clcd1linea2.text, 0, length(clcd1linea2.Text));
       cadlcd2 := Copy(clcd2linea2.text, 0, length(clcd2linea2.Text));
    end;

    if pos < 28 then begin
       if pos + dimension <= 28 then begin // SOLO LCD 1
          cadlcd1 := stuffstring(cadlcd1,pos + 1,dimension,cad);
       end
       else begin // AMBOS LCD
          cadaux := copy(cad,28 - pos + 1,dimension - (28 - pos));
          cadlcd1 := stuffstring(cadlcd1,pos + 1,28 - pos,cad);
          cadlcd2 := stuffstring(cadlcd2,1,dimension - (28 - pos),cadaux);
       end;
    end
    else begin // SOLO LCD 2
       cadaux := copy(cad,0,dimension);
       cadlcd2 := stuffstring(cadlcd2,pos - 28 + 1,dimension,cadaux);
    end;
    fcriticalsectionout.Acquire;
    try
       if linea = 1 then begin
         clcd1linea1.Text := cadlcd1;
         clcd2linea1.Text := cadlcd2;
       end
       else begin
         clcd1linea2.Text := cadlcd1;
         clcd2linea2.Text := cadlcd2; // AQUI ES DONDE ME MARCA EL ERROR
       end;
    finally
    //
    end;
    fcriticalsectionout.leave;

end;

La parte del semáforo y el "try" la añadí para probar a ver si se solucionaba el tema,pero sigue igual,tanto con esa parte como sin ella.
Si elimino la sentencia donde tira el error,lo tira en la anterior,o sea,el mismo caso pero con otra instancia del mismo componente.
¿A qué puede deberse esto? ¿qué pruebas puedo ir haciendo para intentar acotar el fallo?
El hecho por el que uso este componente es porque necesito visualizar cadenas de texto cuyos caracteres ocupen todos el mismo ancho en pixeles.Si alguien sabe de algún Tlabel, Tedit o alguno similar con esta característica me podría resultar más rentable que buscarle solución directa al problema del rasterlabel.
Gracias mil.
Saludos.

Última edición por modulay fecha: 02-10-2007 a las 14:31:44.
Responder Con Cita
  #2  
Antiguo 03-10-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Quizás sea chorra lo que te digo, pero si lo que quieres es que cada carácter ocupe el mismo espacio, no te seria mas fácil usar una fuente que tenga estas propiedades, la mayoría de fuentes para programar (cómo son la Courer New, etc...), tienen esta característica.

Aqui te pongo un sitio de fuentes, y hay fuentes que emulan el "LCD".

Saludos.
Responder Con Cita
  #3  
Antiguo 03-10-2007
modulay modulay is offline
Miembro
 
Registrado: feb 2006
Posts: 46
Poder: 0
modulay Va por buen camino
Pues de chorra nada tío,me has dado la solución al problema,y más sencillo imposible.Ni por un momento sospeché que hubiera fuentes que de por sí contaran con esa cualidad.
Probaré con TLabels y echaré un ojo a esas fuentes del link a ver si encuentro alguna molona
Gracias man.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como evitar un Runtime error 216 sitrico Varios 2 20-03-2009 17:21:12
Runtime Error 216 JoseQ Varios 6 02-08-2007 00:24:47
error RunTime CFPA86 Varios 3 24-05-2007 18:34:29
Dll y error runtime 216 y 217 brandolin Varios 1 10-05-2005 18:02:47
Runtime error 217 rochi Varios 4 18-03-2005 16:27:44


La franja horaria es GMT +2. Ahora son las 09:01:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi