SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: dARK mAGIC en Sábado 7 de Agosto de 2004, 15:13

Título: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: dARK mAGIC en Sábado 7 de Agosto de 2004, 15:13
Hola amigos programadores.    :comp:

Estoy realizando un tutorial interactivo para aprender lenguaje C++ basico con 21 capitulos, pero hay un problema, tengo una presentacion grafica y cuando el usuario desea ingresar el numero de capitulo en esta presentacion, al momento de leer el dato, supongamos, el usuario teclea el numero uno, para el primer capitulo, este siempre es impreso primero en la parte superior izquierda de la pantalla y no donde yo quiero que lo muestre. Me he dado cuenta que quiza esto pasa porque el dato lo estoy leyendo con la siguiente instruccion:
 
  posx=400;
   for (cont = 0; cont <= 2; cont ++,posx+5)
   {  
        capitulo_opcion[cont]=getch();
        outtetxy(posx,460,cadena_opcion);
    }

 Con esta instruccion siempre que el usuario ingresa el numero de capitulo, primero lo muestra en la parte superior izquierda de la pantalla y despues donde yo quiero. Mi pregunta es ¿Existe alguna instruccion parecida a printf() en modo grafico para leer datos?.

Gracias. Salu2   :hola:
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: nicokiki en Sábado 7 de Agosto de 2004, 20:24
Hola!!!!

Citar
¿Existe alguna instruccion parecida a printf() en modo grafico para leer datos?.

Mi pregunta es, (perdon por la ignorancia) que es el modo grafico???
Trabajas con dialogos, SDI, MDI o q??? En serio lo pregunto.

Ahora volviendo a lo q pegue mas arriba, q es algo parecido a printf() para leer datos. Me refiero, en C++ existe cout para stdout y cin para stdin. Pero hay mil cosas mas tipo getch(), putc(), scanf(), gets() (no recomendado) y cosas del estilo

Bueno, en si no entendi mucho lo q pedis pero si puedo ayudar en algo, pedilo
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: Binary en Sábado 7 de Agosto de 2004, 20:34
solo por intuicion, verifica si no hay algo como gets()
Porque getch --> get ch, entonces deberia haber algo de get string o algo asi.
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: JuanK en Lunes 9 de Agosto de 2004, 02:15
lo ciefto es que no hay nada que te haga eso..
deebras crear tui propia funcion utilizando las funciones bioskey y kbhit y logicamnte textout.
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: Gigi0 en Lunes 9 de Agosto de 2004, 06:05
Qué tal, antes que nada saludos y espero esto aún te sirva...
Resulta que encontré varios errores, que son algo delicados a la hora de programar, pero iwal se corrigen con práctica... y son los siguientes:
 1.- Primero que nada debemos ver la forma en la que declaraste la variable 'capitulo_opcion'.
 2.- ' capitulo_opcion' es la misma que quisiste imprimir en outtextxy?, si es así te equivocaste 'cadena_opcion'. Asumí que era la misma.
 3.- Recordarás que la pantalla en DOS es de 640X480. Bueno, tú problema está en que al asumir que posx=400, esto quiere decir que estarás más inclinado a la derecha y va aumentando de 5 en 5 según tu for(te faltó el '=', sería posx+=5, si no no da, y por cierto tu contador se detiene en 2 letras) después, en tu outtextxy pones que la posición en 'y' sea de 460 esto es, hasta abajo!!. No sé si lo quieras centrado, pero para eso tienes dos funciones
     getmaxx() para x , que sería  posx=getmaxx()/2; //eso te lo pone a la mitad en x
     getmaxy() para y, que sería   posy=getmaxy()/2;//esto en y
 
 posx=400;
for (cont = 0; cont <= 2; cont ++,posx+5)
{
capitulo_opcion[cont]=getch();
outtetxy(posx,460,cadena_opcion);
}

4.- Ahora, dependiendo de como declaraste cadena_opcion, que debe ser
char cadena_opcion[10]; //o algo así
al llamarla en outtextxy(posx,posy,cadena_opcion);/*asi te saca la cadena completa
                                                                           en cada for, lo que debe ir si es        
                                                                           que quieres que solo salga letra
                                                                por letra, es:*/
outtextxy(posx,posy,&cadena_opcion[cont]);
con eso queda...
espero haberme explicado, si no... agrégame a tu msn y lo platicamos.
Saludos y suerte
PD te posteo el codigo que hice yo y quedó...

char cadena_opcion[10];
x = getmaxx() / 2;
y = getmaxy() / 2;
for (int cont = 0; cont <= 9; cont++)//aqui declaré cont dentro del for,no es                                                                       necesario declararlo antes, por si te fala eso
 {                                                   //Limpiamos la cadena de cualquier basura
 cadena_opcion[cont]=NULL; }
 for (cont = 0; cont <= 9; cont ++,x+=10)
 {
 cadena_opcion[cont]=getch();
 outtextxy(x,y,&cadena_opcion[cont]);

 }
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: piyey en Jueves 26 de Agosto de 2004, 04:09
Hola dARK mAGIC... :hola:

En este momento estoy leyendo tu consulta y dejame decirte que tengo tu solución. Yo he creado unos archivos de cabecera para eso, estos son TEXTBOX.H que te brindan la opcion de poner una caja de texto como en guindous, ademas de BOTON.H que es para los botones, COMBOBOX.H para las cajas de combo entre otras herramientas... :rolleyes:

El problema es que ahora mismo estoy en la Universidad y no los tengo a mano pero te aseguro que mañana mismo te los adjunto... :P


Espero que todavía los estes necesitando, o de todos modos en un futuro te servirán de mucho, te lo aseguro.

Seeyou!!!

Piyey
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: piyey en Miércoles 1 de Septiembre de 2004, 03:27
Hola dARK mAGIC... perdon por el retraso, pero la universidad me tiene muy ocupado :comp: ...

Pero bueno te traje los archivos que te había dicho, lo unico que estos los hice cuando estaba en segundo año y el codigo es muy largo :P , hay mucho desperdicio de lineas...
Hasta ahora me puse a trabajar en ellos para que queden mejor :smartass: , ya que no he tocado C++ desde entonces (desde que hice las librerias)... espero que te sean de utilidad y cuentame luego si les diste uso...


Seeyou!!! :hola:

Piyey.
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: avis_phoenix en Miércoles 1 de Septiembre de 2004, 03:54
Hola!!
sabes sé larespuesta de esta pregunta desde hace muchotiempo,pero esperaba que tula resolvieras solo, se siente mejor así, es muy sencillo me extraña que nadie te haya dado una respuesta tan simple, simplemente debes tener un buffer para almacenar lo que recojas del getch(), luego imprimirlo enpantalla(ahi usas el outtextxy y decides laposición de tu texto, teniendo en cuenta que debes aumentar la coordenada x cada vez que escribas uan tecla ,(antes convertirlo en puntero[sprintf]) ahora cuando presiona una tecla o cuado llegue a un numero de caracteres que tu decidas comparar el valor del buffer con el valor que tu quieres si es necesario guardar el valor del buffer en una variable, ahora eso no es todo, a nadie se le ha ocurrido que pasaría si se equivoca y quiere borrar, el getch() manda borrar como un simbolo raro, tendrías que ver que tecla te mando y ver si no es uan tecla especial(ctype.h), y bueno no neceitas y un for sería más conveniente un while pues cuando intectuas con lapersona que maneja el programa nunca es un manejo lineal, siempre es variado y sin un orden especifico, bueno, suerte, te peudo mandar codigo si quieres contactame:tlatuani_mx@hotmail.com
Título: Re: Lectura De Cadenas De Caracter En Modo Grafico
Publicado por: piyey en Viernes 3 de Septiembre de 2004, 03:36
:lol: CORRECTO!!! avis_phoenix,  :rolleyes: mas o menos asi es como trabajan las funciones que diseñé, parece que no las han probado por que no tiene muchas descargas :blink: , prueben a descargarlas y si tienen alguna pregunta de como se usan solo comentenla y yo se las responderé lo mas pronto posible... :P


Seeyou!!!

Piyey