Motor de texto en basic.

Moderador: Fundadores

Avatar de Usuario
España jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1377
Registrado: 06 Sep 2013, 02:17
Agradecido : 7 veces
Agradecimiento recibido: 4 veces
Contactar:

Motor de texto en basic.

Mensaje por jordigahan » 28 Feb 2019, 12:20

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
España_Comunidad_Valenciana javu61
Fundador
Fundador
Mensajes: 2018
Registrado: 30 Mar 2013, 11:58
Ubicación: Valencia
Agradecido : 1 vez
Agradecimiento recibido: 25 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por javu61 » 28 Feb 2019, 20:11

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
España otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 419
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Agradecido : 4 veces
Agradecimiento recibido: 10 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por otivax » 28 Feb 2019, 20:57

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
España jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1377
Registrado: 06 Sep 2013, 02:17
Agradecido : 7 veces
Agradecimiento recibido: 4 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por jordigahan » 28 Feb 2019, 21:49

se me olvido comentar que es para el basic del spectrum...

Avatar de Usuario
España_Asturias alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 676
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Agradecido : 2 veces
Agradecimiento recibido: 10 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por alvaroalea » 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


Avatar de Usuario
España otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 419
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Agradecido : 4 veces
Agradecimiento recibido: 10 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por otivax » 28 Feb 2019, 23:01

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
España jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1377
Registrado: 06 Sep 2013, 02:17
Agradecido : 7 veces
Agradecimiento recibido: 4 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por jordigahan » 01 Mar 2019, 03:57

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
Agradecido : 4 veces
Agradecimiento recibido: 4 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por Radiosity » 01 Mar 2019, 08:06

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
España elfoscuro
Demonio segundo orden
Demonio segundo orden
Mensajes: 1598
Registrado: 01 Abr 2013, 22:00
Agradecimiento recibido: 8 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por elfoscuro » 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 ;-)
Fin de impresión

Radiosity
El infierno es su lugar
El infierno es su lugar
Mensajes: 161
Registrado: 01 Nov 2015, 18:35
Agradecido : 4 veces
Agradecimiento recibido: 4 veces
Contactar:

Re: limitar espacio de escritura de caracteres

Mensaje por Radiosity » 01 Mar 2019, 12:11

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

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado