Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2014
Gonza10 Gonza10 is offline
Miembro
NULL
 
Registrado: oct 2014
Posts: 13
Poder: 0
Gonza10 Va por buen camino
C++ Builder 6 Ayuda

Hola gente, necesito que me ayuden con un problema, soy estudiante de programación recién estamos empezando a usar c++ builder 6 y todavía no le agarro la mano, el tema es que me dieron un ejercicio que consiste en hacer un cartel led, nose ni por donde empezar ni que usar. Si alguien me podría dar una mano se agradecería mucho! Saludos.
Responder Con Cita
  #2  
Antiguo 11-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
hay componentes led que puedes instalar, incluso alfanumericos, pero supongo que no puedes usarlos. Otra opcion es usar TImages y canvas para mostrar leds.
Responder Con Cita
  #3  
Antiguo 11-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Gonza10 Ver Mensaje
Hola gente, necesito que me ayuden con un problema, soy estudiante de programación recién estamos empezando a usar c++ builder 6 y todavía no le agarro la mano, el tema es que me dieron un ejercicio que consiste en hacer un cartel led, nose ni por donde empezar ni que usar. Si alguien me podría dar una mano se agradecería mucho! Saludos.
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
  #4  
Antiguo 11-10-2014
Gonza10 Gonza10 is offline
Miembro
NULL
 
Registrado: oct 2014
Posts: 13
Poder: 0
Gonza10 Va por buen camino
Cita:
Empezado por aguml Ver Mensaje
hay componentes led que puedes instalar, incluso alfanumericos, pero supongo que no puedes usarlos. Otra opcion es usar TImages y canvas para mostrar leds.
me podrias ayudar a como hacerlo?, solo guiame, el resto me arreglo yo
Responder Con Cita
  #5  
Antiguo 11-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Gonza10 Ver Mensaje
nose ni por donde empezar ni que usar.
Puedes empezar explicando exactamente qué quieres hacer.
Responder Con Cita
  #6  
Antiguo 11-10-2014
Gonza10 Gonza10 is offline
Miembro
NULL
 
Registrado: oct 2014
Posts: 13
Poder: 0
Gonza10 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Puedes empezar explicando exactamente qué quieres hacer.
Necesito crear un tablero led, donde yo ponga en un edit lo que quiero que se proyecte (números, Letras). Luego que el texto en el cartel se mueva de izquierda a derecha y viceversa.
Responder Con Cita
  #7  
Antiguo 11-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y en qué parte tienes problemas?
Responder Con Cita
  #8  
Antiguo 11-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
algo muy sencillo que se me ocurre es que uses un fuente tipo digital y uses por ejemplo un TLabel que le pongas el fondo negro y lo que escribas en el TEdit lo muestras en el TLabel en rojo y con fuente digital. Para el movimiento usas un TTimer a por ejemplo 500 milisegundos, pones una variable global int x=1, y dentro del evento del timer haces algo como: if(x>Edit1->Text->Length()) x=1; Label1->Caption = Edit1->Text->SubString(x, Edit1->Text->Length()); y con eso consegurias el efecto de movimiento de derecha a izquierda.
Responder Con Cita
  #9  
Antiguo 12-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Debes analizar el problema.
- ¿Te lo piden con displays de 7 segmentos o con matriz de led? No va a haber mucha diferencia.
- En cualquiera de los dos casos, deberás numerar los led y realizar para carácter una secuencia de led encendidos para representarlo a tu gusto. Esa secuencia puede ser un simple array numérico.
- Elije un control, que puede ser un simple TShape que coloreas según la secuencia de led encendidos que previamente habías establecido para él. Esos controles los tienes numerados para tal fin.
-El Movimiento lo consigues cambiando las columnas del control representador.

El resto es pensar si esto te sirve como comienzo y ponerse a trabajar.


Saludos.
Responder Con Cita
  #10  
Antiguo 14-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
los componentes TMS tienen unos que son pantallas leds y son muy reales. La verdad es que me gustaria saber de algun escrito que trate la creacion de un componente visual desde 0, o sea, que no sea derivado de otro ¿Sabeis de alguno asi? Por ejemplo, para hacer el componente de leds ese supongo que no puede descender de ninguno estandar ¿No?
Responder Con Cita
  #11  
Antiguo 14-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Venga, no seas perezoso
Hazlo a mano, así aprenderás.
Si usas un componente ya hecho entonces no aprenderás nada.
Responder Con Cita
  #12  
Antiguo 14-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
a ver, no me expliqué bien. Lo que quiero saber es como hacen para crear un componente como ese ya que lo normal es hacerlo descendiendo de uno que ya exista pero no les veo parecido con ninguno. Ademas, si añades un TEdit en el modo diseño ves un rectangulo blanco con la forma que mostrará cuando lo ejecutes, si añades uno de estos de leds ves el rectangulo con el aspecto que tendrá en ejecucion... ¿Como se hace para que muestre eso asi en modo diseño? La verdad es que no lo necesito para nada pero me pica la curiosidad, ademas, lo que explica escafandra, si fuese una pantalla de por ejemplo 15 caracteres y cada caracter se pintara en una matriz de leds de, por ejemplo, 8*8, al realizar el desplazamiento a la izquierda, ¿No se veria un parpadeo? A mi se me ocurre como realizar una matriz por ejemplo bool cadena[7][50] y dibujo con 0s y 1s el texto pero no veo una forma eficiente de dibujarlo en un TImage por ejemplo y refrescarlo sin parpadeos.
Responder Con Cita
  #13  
Antiguo 14-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Estoy haciendo una prueba y ya lo tengo terminado al 90% pero me falta un detalle y es que para facilitar el trabajo con los leds (son TShapes) he creado un array de punteros como sigue:
Código:
private:    // User declarations
   TShape *FilaLeds[7][60] = {{Led1,Led2,Led3,Led4,Led5,Led6,Led7,Led8,Led9,Led10,Led11,Led12,Led13,Led14,Led15,Led16,Led17,Led18,Led19,Led20,Led21,Led22,Led23,Led24,Led25,Led26,Led27,Led28,Led29,Led30,Led31,Led32,Led33,Led34,Led35,Led36,Led37,Led38,Led39,Led40,Led41,Led42,Led43,Led44,Led45,Led46,Led47,Led48,Led49,Led50,Led51,Led52,Led53,Led54,Led55,Led56,Led57,Led58,Led59,Led60},
                              {Led61,Led62,Led63,Led64,Led65,Led66,Led67,Led68,Led69,Led70,Led71,Led72,Led73,Led74,Led75,Led76,Led77,Led78,Led79,Led80,Led81,Led82,Led83,Led84,Led85,Led86,Led87,Led88,Led89,Led90,Led91,Led92,Led93,Led94,Led95,Led96,Led97,Led98,Led99,Led100,Led101,Led102,Led103,Led104,Led105,Led106,Led107,Led108,Led109,Led110,Led111,Led112,Led113,Led114,Led115,Led116,Led117,Led118,Led119,Led120},
                              {Led121,Led122,Led123,Led124,Led125,Led126,Led127,Led128,Led129,Led130,Led131,Led132,Led133,Led134,Led135,Led136,Led137,Led138,Led139,Led140,Led141,Led142,Led143,Led144,Led145,Led146,Led147,Led148,Led149,Led150,Led151,Led152,Led153,Led154,Led155,Led156,Led157,Led158,Led159,Led160,Led161,Led162,Led163,Led164,Led165,Led166,Led167,Led168,Led169,Led170,Led171,Led172,Led173,Led174,Led175,Led176,Led177,Led178,Led179,Led180},
                              {Led181,Led182,Led183,Led184,Led185,Led186,Led187,Led188,Led189,Led190,Led191,Led192,Led193,Led194,Led195,Led196,Led197,Led198,Led199,Led200,Led201,Led202,Led203,Led204,Led205,Led206,Led207,Led208,Led209,Led210,Led211,Led212,Led213,Led214,Led215,Led216,Led217,Led218,Led219,Led220,Led221,Led222,Led223,Led224,Led225,Led226,Led227,Led228,Led229,Led230,Led231,Led232,Led233,Led234,Led235,Led236,Led237,Led238,Led239,Led240},
                              {Led241,Led242,Led243,Led244,Led245,Led246,Led247,Led248,Led249,Led250,Led251,Led252,Led253,Led254,Led255,Led256,Led257,Led258,Led259,Led260,Led261,Led262,Led263,Led264,Led265,Led266,Led267,Led268,Led269,Led270,Led271,Led272,Led273,Led274,Led275,Led276,Led277,Led278,Led279,Led280,Led281,Led282,Led283,Led284,Led285,Led286,Led287,Led288,Led289,Led290,Led291,Led292,Led293,Led294,Led295,Led296,Led297,Led298,Led299,Led300},
                              {Led301,Led302,Led303,Led304,Led305,Led306,Led307,Led308,Led309,Led310,Led311,Led312,Led313,Led314,Led315,Led316,Led317,Led318,Led319,Led320,Led321,Led322,Led323,Led324,Led325,Led326,Led327,Led328,Led329,Led330,Led331,Led332,Led333,Led334,Led335,Led336,Led337,Led338,Led339,Led340,Led341,Led342,Led343,Led344,Led345,Led346,Led347,Led348,Led349,Led350,Led351,Led352,Led353,Led354,Led355,Led356,Led357,Led358,Led359,Led360},
                              {Led361,Led362,Led363,Led364,Led365,Led366,Led367,Led368,Led369,Led370,Led371,Led372,Led373,Led374,Led375,Led376,Led377,Led378,Led379,Led380,Led381,Led382,Led383,Led384,Led385,Led386,Led387,Led388,Led389,Led390,Led391,Led392,Led393,Led394,Led395,Led396,Led397,Led398,Led399,Led400,Led401,Led402,Led403,Led404,Led405,Led406,Led407,Led408,Led409,Led410,Led411,Led412,Led413,Led414,Led415,Led416,Led417,Led418,Led419,Led420}};
El problema es que no puedo inicializarlo así como hago desde el private del form y tampoco puedo declararlo como publico. Tendria que inicializarlo en el OnCreate del Form pero que sea accesible desde cualquier evento del Form ¿como lo inicializo para que se cumpla eso?

Edito: Tambien he probado con esto:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   int contador = 1;
   for(int y=0; y<7; y++)
   {
      for(int x=0; x<60; x++)
      {
         FilaLeds[y][x] = (TShape*)(AnsiString("Led"+AnsiString(contador)).c_str());
         contador++;
      }
   }
}
//---------------------------------------------------------------------------
Se lo meto a la fuerza usando casting para todo pero en ejecucion crashea y ya no se me ocurre como hacerlo.

Última edición por aguml fecha: 14-10-2014 a las 13:19:15.
Responder Con Cita
  #14  
Antiguo 14-10-2014
Gonza10 Gonza10 is offline
Miembro
NULL
 
Registrado: oct 2014
Posts: 13
Poder: 0
Gonza10 Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Debes analizar el problema.
- ¿Te lo piden con displays de 7 segmentos o con matriz de led? No va a haber mucha diferencia.
- En cualquiera de los dos casos, deberás numerar los led y realizar para carácter una secuencia de led encendidos para representarlo a tu gusto. Esa secuencia puede ser un simple array numérico.
- Elije un control, que puede ser un simple TShape que coloreas según la secuencia de led encendidos que previamente habías establecido para él. Esos controles los tienes numerados para tal fin.
-El Movimiento lo consigues cambiando las columnas del control representador.

El resto es pensar si esto te sirve como comienzo y ponerse a trabajar.


Saludos.
Gracias a los que respondieron en unas horas comienzo a trabajar en esto, les cuento si necesito algo mas!!
Responder Con Cita
  #15  
Antiguo 14-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Lo conseguí pero solo admito un maximo de 10 caracteres porque uso 420 TShapes a 7*6 por caracteres. Va estupendamente pero quiero ver si soy capaz de mostrar textos mas largos.
Responder Con Cita
  #16  
Antiguo 14-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Amigos tengo un problema extraño, ya he conseguido que puedas meter cadenas largas y te las va rotando en una pantalla de 10 caracteres de trama de leds pero al intentar eliminar la memoria dinamica que uso para ello me da error.
Tengo esto:
Código PHP:
#define MAX_NROWS 7
#define MAX_NCOLS 60
#define WIDTH_CHAR 6

//Globales
bool **leds;
int nCols;

   
//Si ya existe leds libero su memoria antes de volver a asignarle
   
if(leds != NULL)
   {
      for(
int x 0nColsx++)
         
delete [] leds[x];
      
delete [] leds;
   }

   
//Inicializo el valor al que apunta leds
   
leds NULL;

   
//Obtengo el numero necesario de columnas para guardar la trama de leds ya que cada caracter usa 6 columnas y 7 filas
   
nCols Edit1->Text.Length() * WIDTH_CHAR//WIDTH_CHAR vale 6

   //Reservo memoria para el numero de filas necesarias
   
leds = new bool*[MAX_NROWS];

   
//Reservo memoria para las columnas necesarias para cada fila
   
for(int y=0;y<MAX_NROWSy++)
   {
      
leds[y] = new bool[nCols];

      
//Pongo a 0 todos
      
for(int x=0nColsx++)
         
leds[y][x] = false;
   } 
El codigo se ejecuta en un boton y ademas la parte de liberacion de la memoria dinamica tambien la tengo en el evento OnClose del Form. El problema es que al intentar liberar la memoria da un error y no funciona correctamente. ¿alguna idea de que está pasando?
Responder Con Cita
  #17  
Antiguo 14-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Solucionado.
Responder Con Cita
  #18  
Antiguo 14-10-2014
Gonza10 Gonza10 is offline
Miembro
NULL
 
Registrado: oct 2014
Posts: 13
Poder: 0
Gonza10 Va por buen camino
Cita:
Empezado por aguml Ver Mensaje
Solucionado.
pobre el tuyo me tira error en una linea, no entiendo que pusiste en el form, yo tengo algo asi Un shape rectangular(lo que seria el cartel), un edit(donde pondria el texto,y un boton que proyecte el texto en el cartel.
no puedo poner imagenes de como lo tengo echo
Responder Con Cita
  #19  
Antiguo 14-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
Solucionado.
Es de buena costumbre explicar cómo lo solucionaste, para que todos puedan aprender
Responder Con Cita
  #20  
Antiguo 14-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Dado que Gonza10 aclara,
Cita:
Empezado por Gonza10 Ver Mensaje
..., soy estudiante de programación recién estamos empezando a usar c++ builder 6 y todavía no le agarro la mano ...
voy a dar una versión apróximada de lo que yo pretendería de un estudiante que, con conocimientos básicos, intente implementar esa tarea:
Código PHP:
#define TO_LEFT  false
#define TO_RIGHT true

AnsiString msg ="";
AnsiString spc;
int cont 0;
bool sentido TO_RIGHT;

/* Inicializar */
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
spc spc.StringOfChar(' ',50);
  
Timer1->Interval 40;
  
Timer1->Enabled  false;
  
btnStartStop->Caption "Comenzar";
  
Edit1->Width 530;
  
Edit1->Text  "PRUEBA DE DESPLAZAMIENTO DE TEXTO";
}

/* Timer OnTimer */
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (
sentido)
    
Caption msg.SubString(msg.Length(), 1) + msg.SubString(1msg.Length()-1);
  else
    
Caption msg.SubString(2msg.Length()-1) + msg.SubString(11);
  
msg Caption;
}

/* Sale de Edit */
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
  
msg spc Edit1->Text;
}

/* Desplazar a la izquierda */
void __fastcall TForm1::btnToLeftClick(TObject *Sender)
{
  
sentido TO_LEFT;
}

/* Desplazar a la derecha */
void __fastcall TForm1::btnToRightClick(TObject *Sender)
{
  
sentido TO_RIGHT;
}

/* Detener - Comenzar */
void __fastcall TForm1::btnStartStopClick(TObject *Sender)
{
  
Timer1->Enabled = !Timer1->Enabled;
  
btnStartStop->Caption Timer1->Enabled "Detener" "Comenzar";

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-10-2014 a las 21:14:53.
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
ayuda con dudas en builder x6 jrla C++ Builder 4 04-09-2014 02:52:02
Ayuda con SQL y Builder fedee C++ Builder 1 05-08-2011 01:26:33
ayuda con c++ builder 6 elsamurai C++ Builder 26 17-12-2010 11:16:26
Ayuda con Report Builder shany Impresión 9 16-09-2010 23:21:32
Ayuda tutores de Builder TamaraCuba C++ Builder 1 04-02-2006 14:20:33


La franja horaria es GMT +2. Ahora son las 14:10:29.


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