Motor de texto en basic.

Aquí solo proyectos que incluyan el código fuente

Moderador: Fundadores

Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Avatar de Usuario
jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1755
Registrado: 06 Sep 2013, 02:17
Has thanked: 3 times
Been thanked: 17 times
Contactar:

Motor de texto en basic.

Mensaje por jordigahan »

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?
Última edición por jordigahan el 05 Mar 2019, 18:29, editado 1 vez en total.
Avatar de Usuario
javu61 !Sinclair QL
Fundador
Fundador
Mensajes: 2175
Registrado: 30 Mar 2013, 11:58
Ubicación: Valencia
Been thanked: 76 times
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por javu61 »

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 \\//_
Avatar de Usuario
otivax
Aspirante a demonio
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

Mensaje por otivax »

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.
Avatar de Usuario
jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1755
Registrado: 06 Sep 2013, 02:17
Has thanked: 3 times
Been thanked: 17 times
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por jordigahan »

se me olvido comentar que es para el basic del spectrum...
Avatar de Usuario
alvaroalea España - Asturias
Demonio segundo orden
Demonio segundo orden
Mensajes: 1091
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Has thanked: 13 times
Been thanked: 52 times
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por alvaroalea »

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

Avatar de Usuario
otivax
Aspirante a demonio
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

Mensaje por otivax »

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.
Avatar de Usuario
jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1755
Registrado: 06 Sep 2013, 02:17
Has thanked: 3 times
Been thanked: 17 times
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por jordigahan »

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
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.


10 let a$="ksdhkdskjhdksjhfkjsdhfkjshkjhfkshfksdhkfshkhfkdshkfhkshjd"
20 print at 1,1;a$ (to 23)
Radiosity
El infierno es su lugar
El infierno es su lugar
Mensajes: 161
Registrado: 01 Nov 2015, 18:35

Re: limitar espacio de escritura de caracteres

Mensaje por Radiosity »

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.
Avatar de Usuario
elfoscuro
Demonio segundo orden
Demonio segundo orden
Mensajes: 1825
Registrado: 01 Abr 2013, 22:00
Been thanked: 25 times

Re: limitar espacio de escritura de caracteres

Mensaje por elfoscuro »

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 ;-)
Fin de impresión
Radiosity
El infierno es su lugar
El infierno es su lugar
Mensajes: 161
Registrado: 01 Nov 2015, 18:35

Re: limitar espacio de escritura de caracteres

Mensaje por Radiosity »

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 ;-)
En emulador eso no parece que fuencione.
Responder

Volver a “Proyectos de software abiertos”