Página 4 de 6

Re: limitar espacio de escritura de caracteres

Publicado: 08 Mar 2019, 05:36
por derdhal77
javu61 escribió: 07 Mar 2019, 14:20
Yo os gano, usaba Cobol a finales de los 70 en un Mainframe Univac 1100, en terminales con un editor de textos muy espartano en los que contabas espacios para empezar a escribir, pero mejoraba usando tarjetas perforadas ya que podías establecer las paradas de tabulación. También hice cositas en Fortan y en ALGOL en aquella máquina. Luego pasé a los minis con Basic, variables con una letra o una letra y un número únicamente, había que ser muy ordenado para no perderse con las variables y era demasiado sencillo hacer código espagueti si no eras cuidadoso, y siempre contando el ahorro de cada bit pues la memoria era muy limitada, 64Kb para el sistema operativo, un puesto de trabajo en batch y dos terminales en demanda, con un disco de 5Mb en una máquina que costaba 25.000.000 de pesetas de hace 40 años, lo mejor es que funcionaba muy bien y trabajaba rápido, no como ahora que necesitas un procesador de la leche para escribir un hola mundo y que luego tarde 1 minuto entre que arranca, carga librería y cosas de esas.
Ostras, FORTRAN, yo también lo use cuando estudiaba también use lenguaje ensamblador, PASCAL y QBASIC... que tiempos aquellos, el trabajo de fin de curso de QBASIC fue un arkanoid y el de PASCAL fue el juego de cartas de la escoba

Re: limitar espacio de escritura de caracteres

Publicado: 08 Mar 2019, 22:30
por elfoscuro
derdhal77 escribió: 08 Mar 2019, 05:36
javu61 escribió: 07 Mar 2019, 14:20
Yo os gano, usaba Cobol a finales de los 70 en un Mainframe Univac 1100, en terminales con un editor de textos muy espartano en los que contabas espacios para empezar a escribir, pero mejoraba usando tarjetas perforadas ya que podías establecer las paradas de tabulación. También hice cositas en Fortan y en ALGOL en aquella máquina. Luego pasé a los minis con Basic, variables con una letra o una letra y un número únicamente, había que ser muy ordenado para no perderse con las variables y era demasiado sencillo hacer código espagueti si no eras cuidadoso, y siempre contando el ahorro de cada bit pues la memoria era muy limitada, 64Kb para el sistema operativo, un puesto de trabajo en batch y dos terminales en demanda, con un disco de 5Mb en una máquina que costaba 25.000.000 de pesetas de hace 40 años, lo mejor es que funcionaba muy bien y trabajaba rápido, no como ahora que necesitas un procesador de la leche para escribir un hola mundo y que luego tarde 1 minuto entre que arranca, carga librería y cosas de esas.
Ostras, FORTRAN, yo también lo use cuando estudiaba también use lenguaje ensamblador, PASCAL y QBASIC... que tiempos aquellos, el trabajo de fin de curso de QBASIC fue un arkanoid y el de PASCAL fue el juego de cartas de la escoba
Javu, es que tú ya está casi jubilado abuelete ;-)

Fortran no lo he tocado, la verdad. COBOL y Pascal era lo mio. Pascal siempre me encantó y luego Delphi también. Eso si... los objetos se me atragantaron al principio. Menudo cambio de visión fue aquello.

@Jordi, creo que tienes algún problema con los bucles. Debes estar intentando llegar más allá del final de la cadena de texto (LEN a$).

Un saludo.

Re: Motor de texto en basic.

Publicado: 09 Mar 2019, 17:00
por jordigahan
probablemente sea eso. como aumento el limite ?

Re: Motor de texto en basic.

Publicado: 10 Mar 2019, 03:21
por jordigahan
he encontrado este codigo que tambien parece hacer lo mismo, pero no se cmo hacerlo para que me respete los limites.
10 GOTO 1000
20 REM las rutinas que llames mucho van más rápido si las pones al principio
30 FOR I = 1 TO LEN(A$):PRINT A$(I);:PAUSE 10:NEXT I:PRINT:RETURN
1000 LET A$="ESTE MENSAJE APARECERA LETRA POR LETRA":GOSUB 30
1010 LET A$="ESTE MENSAJE TAMBIEN APARECERA LETRA POR LETRA":GOSUB 30
1020 LET A$="HOLA MAMAAAA":GOSUB 30

Re: Motor de texto en basic.

Publicado: 10 Mar 2019, 10:02
por elfoscuro
jordigahan escribió: 09 Mar 2019, 17:00 probablemente sea eso. como aumento el limite ?
No tienes que aumentar el límite, si no calcularlo bien. Supongo que con poner un "-1" en después del valor del TO en uno de los FOR, lo resolverás. Sin ver el código que tienes, no te puedo decir mucho más. Pero el problema es que si tu cadena tiene 10 caracteres, tu rutina piensa que tiene 11.

En cuanto al código que has puesto, si, imprime letra a letra, pero en toda la pantalla, y eso no es lo que quieres.

Un saludo.

Re: Motor de texto en basic.

Publicado: 10 Mar 2019, 21:00
por jordigahan
aqui te dejo el codigo:
Imagen

Re: Motor de texto en basic.

Publicado: 10 Mar 2019, 22:48
por elfoscuro
Así, a bote pronto, la 1520 está mal. Estás asumiendo que al menos habrá 23 caracteres (si a=0, entonces quedaría FOR c=1 to 23, y si a$<23 entonces dará error).

Revisa esa parte. Ahí ya tienes un buen problema a resolver.

Un saludo.

Re: Motor de texto en basic.

Publicado: 12 Mar 2019, 00:37
por javu61
Este programa hace lo que quieres, no está muy optimizado pero funciona bien, y hace un pequeño efecto para borrar la zona de la pantalla donde se imprime si ocupa mas de lo que cabe en la zona definida para presentar el texto.
► Mostrar Spoiler

Re: Motor de texto en basic.

Publicado: 13 Mar 2019, 01:59
por jordigahan
gracias por el aporte javu, pero tu codigo es extremadamente largo !!!!
he encontrado estoq ue parece que hace lo mismo, solo faltaria añadir lo de que cambien de linea automaticamente si no cabe la palabra.

Imagen

Re: Motor de texto en basic.

Publicado: 13 Mar 2019, 13:02
por javu61
Ese trozo comienza e imprimir donde esté el cursor, y cuando llega al final de la línea salta a la siguiente siempre, si llegas la final de la pantalla se produce un scrool y sigue imprimiendo.

La diferencia es que mi código imprime un recuadro donde ubicar el texto, y luego imrpime una cadena que se le pase en a$, en una zona de pantalla definida entre las líneas L1 y L2, y las columnas C1 y C2, imprime el texto letra a letra pero cuando llega a la última columna que le indiques y pasa a la siguiente línea, corta el texto por palabras completas y no parte palabras entre líneas. Cuando llena todas las líneas que le has dicho espera una tecla y luego borra la zona y sigue escribiendo desde el inicio de la zona indicada.

Puedo hacerlo mas sencillo si no imprime el reborde alrededor del texto, puedo simplificar el borrado, pero poco mas si quieres imprimir textos de longitud variable correctamente, te lo voy a simplificar al máximo en cuanto tenga un rato, pero le deberás pasar al menos 5 parámetros: L1, L2, C1, C2, a$ que son respectivamente la primera y última línea en que quieres que se imprima, la primera y última columna de la pantalla donde queires que se imprima, y el texto a imprimir.