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:

Re: Motor de texto en basic.

Mensaje por jordigahan »

tengo diseñada una interface, asi que lo unico que necesito es poder imprimir texto en esa zona , y que si no cabe el texto cuando llegue al limite, salte automaticamente a la siguiente linea .
si llega al final del cuadro de texto, tiene que borrar las lineas y volver a empezar en la parte de arriva, nada de scroll.
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: Motor de texto en basic.

Mensaje por javu61 »

A ver, le he quitado lo que no es imprescindible, las primeras líneas es para que veas como se utiliza, das valor a L1, L2, C1, C2 y a$, con ello llamas a la rutina en 2515. Si hubiese algo en esa zona de la pantalla antes debes llamar a la rutina en 2615 para limpiarla.
► Mostrar Spoiler
Y si lo quieres mas sencillo, pero menos bonito sin cortar por palabras completas sino donde caida, la rutina sería esta:
► Mostrar Spoiler
Larga vida y prosperidad \\//_
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: Motor de texto en basic.

Mensaje por jordigahan »

Imagen
este es el codigo que mejor me funciona, hace exactamente lo que necesito, pero cuando termina de imprimir siempre me marca error de subindice incorrecto en la linea 1570 sin importar lo largo o corto que sea el texto.

alguna forma de poder hacer copy/paste para ir probando los codigos y no tener que teclearlos... :(
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 101 times

Re: Motor de texto en basic.

Mensaje por wilco2009 »

Cuando terminas el bucle que hay entre 1555 y 1565 c acaba valiendo uno más que len(a$), por lo que en 1570 te da error de subíndice.
Añade simplemente:
1568 return
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
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: Motor de texto en basic.

Mensaje por javu61 »

Tienes que añadir esto al inicio para llamar bien a la rutina

1501 GO SUB 1505
1502 STOP

El error que te da se resuelve añadiendo esta línea

1523 IF c > LEN a$ THEN RETURN

Pero para que borre bien la pantalla debes cambiar la línea 1540, dejándola así:

1540 IF b=15 THEN LET b=1: PRINT AT 7,28;"-": GO SUB 1586

y añadir estas otras

1586 IF INKEY$="" THEN GO TO 1586
1596 RETURN

Tu rutina lo que hace es imprimir entre la línea 1 y la 14, entre las columnas 1 y 23, el texto que le digas en a$ caracter a caracter, partiendo las líneas donde le toque, y cuando llega a la línea 15 espera una tecla, borra ese trozo de pantalla y vuelve a la 1 para seguir imprimiendo. En lo que yo te puse puedes elegir que líneas impirme y en que columnas, y corta por palabras.

Te pongo tu código completo
► Mostrar Spoiler
Larga vida y prosperidad \\//_
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: Motor de texto en basic.

Mensaje por jordigahan »

Imagen

ahora lo unico que falta es hacer que si la ultima palabra de la linea no cabe, la pase a la siguiente linea y continue con el texto.
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: Motor de texto en basic.

Mensaje por jordigahan »

Siguiendo un poco con el hilo, aunque cambiando de tema, necesitaria hacer un input, pero en cualquier lugar de la pantalla, parece ser que la solucion pasa por usar un poke, pero no tengo ni idea de como averiguarlo, alguna idea ?
Avatar de Usuario
elfoscuro
Demonio segundo orden
Demonio segundo orden
Mensajes: 1825
Registrado: 01 Abr 2013, 22:00
Been thanked: 25 times

Re: Motor de texto en basic.

Mensaje por elfoscuro »

jordigahan escribió: 20 Mar 2019, 18:13 Siguiendo un poco con el hilo, aunque cambiando de tema, necesitaria hacer un input, pero en cualquier lugar de la pantalla, parece ser que la solucion pasa por usar un poke, pero no tengo ni idea de como averiguarlo, alguna idea ?
Creo que no puedes hacer lo que quieres con INPUT, porque siempre sale en la parte baja de la pantalla (#1 creo recordar, pero vete a saber). El Poke que dices, sólo sirve si tienes la pantalla en blanco, porque lo que hace es agrandar esas dos líneas (23 y 24) para que "suban", por lo que se borra lo que haya en la pantalla "principal" (22 primeras líneas).

Para hacer lo que quieres, necesitas más código, y tienes que hacerte tu propio INPUT, a base de INKEY$. No te queda otra. En mis tiempos (lease con voz de viejo archivero) hice esa rutina, y permitía usar DELETE, cursores y demás. Pero vete a saber "ande andará".

Un saludo.
Fin de impresión
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: Motor de texto en basic.

Mensaje por jordigahan »

falsa alarma, al final creo que he encontrado otra forma de hacerlo menos complicada.
de todas formas, no sabia que eso fuera tan complicado de hacer...
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: Motor de texto en basic.

Mensaje por otivax »

Puedes hacerlo con PAUSE 0, INKEY$ y PRINT AT
En la página 1 de este hilo tienes más o menos como hacerlo.
Responder

Volver a “Proyectos de software abiertos”