Motor de texto en basic.
Moderador: Fundadores
Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
- jordigahan
- Demonio segundo orden
- Mensajes: 1759
- Registrado: 06 Sep 2013, 02:17
- Has thanked: 3 times
- Been thanked: 17 times
- Contactar:
Motor de texto en basic.
pues tengo una idea en mente y se me plantea un problema.
imaginar que estais usando el comando print, que habeis dibujado un cuadro en pantalla y que todo lo que escribas quieres que salga en ese cuadrado y que luego no se salga de ahi el texto.
ahy alguna forma de hacerlo?
imaginar que estais usando el comando print, que habeis dibujado un cuadro en pantalla y que todo lo que escribas quieres que salga en ese cuadrado y que luego no se salga de ahi el texto.
ahy alguna forma de hacerlo?
Última edición por jordigahan el 05 Mar 2019, 18:29, editado 1 vez en total.
- javu61
- Fundador
- Mensajes: 2175
- Registrado: 30 Mar 2013, 11:58
- Ubicación: Valencia
- Been thanked: 76 times
- Contactar:
Re: limitar espacio de escritura de caracteres
En windows/linux/mac se soluciona usando una fuente con espaciado fijo, las mas usada son "Consola" o "Courier New". Hay un artículo sobre esto aqui.
Larga vida y prosperidad \\//_
- otivax
- Aspirante a demonio
- Mensajes: 425
- Registrado: 22 Ene 2015, 11:05
- Ubicación: Alcoy
- Been thanked: 1 time
Re: limitar espacio de escritura de caracteres
Dependiendo del sistema u ordenador en el que estés plasmando tu idea, se pueden dar varías soluciones. Por ejemplo, usando un Canvas tanto en .Net como en Java Android puedes medir que ocupará el texto a dibujar y si excede las dimensiones que tú hayas fijado, lo puedes recortar, añadir otra línea, sustituir parte del texto con ..., o cambiar el tamaño de la Fuente a un valor más bajo.
En .net y hablando de memoria hay una función de un objeto Canvas llamada MeasureText que te devuelve esa info, en Java Android recuerdo que se llama igual.
Salu2.
En .net y hablando de memoria hay una función de un objeto Canvas llamada MeasureText que te devuelve esa info, en Java Android recuerdo que se llama igual.
Salu2.
- jordigahan
- Demonio segundo orden
- Mensajes: 1759
- Registrado: 06 Sep 2013, 02:17
- Has thanked: 3 times
- Been thanked: 17 times
- Contactar:
Re: limitar espacio de escritura de caracteres
se me olvido comentar que es para el basic del spectrum...
- alvaroalea
- Demonio segundo orden
- Mensajes: 1092
- Registrado: 25 Oct 2014, 12:49
- Ubicación: Asturias, Paraiso Natural
- Has thanked: 14 times
- Been thanked: 52 times
- Contactar:
Re: limitar espacio de escritura de caracteres
Print a$( to n) imprime como mucho los n primeros caracteres de a$
Te sirve con eso?
Enviado desde mi MI PAD 3 mediante Tapatalk
Te sirve con eso?
Enviado desde mi MI PAD 3 mediante Tapatalk
- otivax
- Aspirante a demonio
- Mensajes: 425
- Registrado: 22 Ene 2015, 11:05
- Ubicación: Alcoy
- Been thanked: 1 time
Re: limitar espacio de escritura de caracteres
Siendo para Spectrum y hablando de memoria, puedes hacer lo siguiente:
Variable numérica contador=0 y alfanumérica b$=""
Leer el teclado con inkey$
Guardar la tecla pulsada en una variable, por ejemplo a$
Si contador no ha alcanzado el máximo b$=b$+a$
Si contador ha alcanzado el máximo solo permitir carácteres ASCII 8 y 13
Si a$=chr$(8) borrar último carácter de b$
Si a$=chr$(13) ejecutar la pulsación de Intro
Imprimir b$ con PRINT AT en la posición adecuada.
A grandes rasgos te puede servir y repito que hablo de memoria. De intro sé seguro que era el 13 pero de borrar no recuerdo muy bien si es el 8 u otro.
Ya nos cuentas si te sirve.
Variable numérica contador=0 y alfanumérica b$=""
Leer el teclado con inkey$
Guardar la tecla pulsada en una variable, por ejemplo a$
Si contador no ha alcanzado el máximo b$=b$+a$
Si contador ha alcanzado el máximo solo permitir carácteres ASCII 8 y 13
Si a$=chr$(8) borrar último carácter de b$
Si a$=chr$(13) ejecutar la pulsación de Intro
Imprimir b$ con PRINT AT en la posición adecuada.
A grandes rasgos te puede servir y repito que hablo de memoria. De intro sé seguro que era el 13 pero de borrar no recuerdo muy bien si es el 8 u otro.
Ya nos cuentas si te sirve.
- jordigahan
- Demonio segundo orden
- Mensajes: 1759
- Registrado: 06 Sep 2013, 02:17
- Has thanked: 3 times
- Been thanked: 17 times
- Contactar:
Re: limitar espacio de escritura de caracteres
pues parece que funciona, pero si la frase tiene ma caracteres que el limite que le pongo, la corta y necesito que aparezca el resto de la frase en la parte de abajo.alvaroalea escribió: ↑28 Feb 2019, 22:24 Print a$( to n) imprime como mucho los n primeros caracteres de a$
Te sirve con eso?
Enviado desde mi MI PAD 3 mediante Tapatalk
10 let a$="ksdhkdskjhdksjhfkjsdhfkjshkjhfkshfksdhkfshkhfkdshkfhkshjd"
20 print at 1,1;a$ (to 23)
-
- El infierno es su lugar
- Mensajes: 161
- Registrado: 01 Nov 2015, 18:35
Re: limitar espacio de escritura de caracteres
Necesitas un bucle. Tienes que dividir el texto de la cadena en cadenas mas pequeñas con la longitud del recuadro e imprimirlas en orden que las vas cortando. Puedes hacerlo mucho mas estetico si vas palabra por palabra, asi evitarias cortar palabras por la mitad y las cadenas quedarian cortadas en los espacios.
- elfoscuro
- Demonio segundo orden
- Mensajes: 1831
- Registrado: 01 Abr 2013, 22:00
- Been thanked: 26 times
Re: limitar espacio de escritura de caracteres
Creo que sería algo así:
10 let a$="ksdhkdskjhdksjhfkjsdhfkjshkjhfkshfksdhkfshkhfkdshkfhkshjd"
20 for f=0 to len(a$)/23-1
30 print at f+1,1;a$ (f*23 to f*23+23)
40 next f
Revísalo, porque hace siglos que no toco el BASIC y estoy más que oxidado. Seguro que algún "23" no será correcto y me dejaré fuera algún caracter de la cadena
10 let a$="ksdhkdskjhdksjhfkjsdhfkjshkjhfkshfksdhkfshkhfkdshkfhkshjd"
20 for f=0 to len(a$)/23-1
30 print at f+1,1;a$ (f*23 to f*23+23)
40 next f
Revísalo, porque hace siglos que no toco el BASIC y estoy más que oxidado. Seguro que algún "23" no será correcto y me dejaré fuera algún caracter de la cadena
Fin de impresión
-
- El infierno es su lugar
- Mensajes: 161
- Registrado: 01 Nov 2015, 18:35
Re: limitar espacio de escritura de caracteres
En emulador eso no parece que fuencione.elfoscuro escribió: ↑01 Mar 2019, 09:26 Creo que sería algo así:
10 let a$="ksdhkdskjhdksjhfkjsdhfkjshkjhfkshfksdhkfshkhfkdshkfhkshjd"
20 for f=0 to len(a$)/23-1
30 print at f+1,1;a$ (f*23 to f*23+23)
40 next f
Revísalo, porque hace siglos que no toco el BASIC y estoy más que oxidado. Seguro que algún "23" no será correcto y me dejaré fuera algún caracter de la cadena