Equivalente a strdel()

Started by FreeYourMind, April 05, 2010, 08:42:52 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

Quote from: Drumpi on April 06, 2010, 05:55:02 PM
¿Qué problema hay con

s+=chr(ascii)

siempre que ascii no valga menos de 32?

Supongo que al pusar una tecla te añadirá varias veces el mismo caracter, una por FRAME, probé una solución así en su día y tuve que meter un "filtro" para evitar interpretar la misma pulsación de tecla.

Lo que he echado siempre en falta en Bennu es una función para obtener una cadena de texto por teclado, una función sencilla, que la invoques y mantenga un proceso leyendo los caracteres que pulsas, de forma "normal" como en C...

Ahora no me digáis que ya hay algo así porque en su día tuve que hacer esa función a mano xD
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

DCelso

Quote from: SplinterGU on April 06, 2010, 05:20:12 PM
sera porque "s" es una string?
No entendiste. Lo que no va es el casting de un int a char.
Ya se que s es un string, lo que se pretende en el ejemplo es sumar al string un char.
Si ves detenidamente el ejemplo verás que existe una variable valor de tipo char en el que le asignas el int ascii y ya sí te deja sumarlo al string.

global
  char valor;
end
  valor = ascii;
  s+=valor;
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

te entendi perfectamente... pero el sumar un char a una string es una excepcion... char es un dato numerico... y la excepcion no esta trasladada al cast...

habria que hacer algo al respecto.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

va a ser que no , este ejemplo va perfertamente.

PROGRAM capturatecla;

import "mod_string"
import "mod_key"
import "mod_video"
import "mod_map"
import "mod_text"
import "mod_draw"
import "mod_math"
import "mod_proc"                           
import "mod_say"
import "mod_grproc"

global
string c0;
string c1;
string c2;
char value;
end

PROCESS main()
BEGIN
     full_screen=false;
set_mode(320,240,16);
     set_fps(60,0);
   
write_var(0,10,100,3,c0);
write_var(0,10,150,3,c1);
write_var(0,10,200,3,c2);

loop
         if (key(_esc)) break; end
IF (scan_code<>0)
c0=c0 + ascii;
value = ascii;
c1=c1 +  value;
while (scan_code<>0) frame; end

END
         frame;
     end
     
     let_me_alone();
     exit(0,0);   
END

Mientras que este otro no compila

PROGRAM capturatecla;

import "mod_string"
import "mod_key"
import "mod_video"
import "mod_map"
import "mod_text"
import "mod_draw"
import "mod_math"
import "mod_proc"                           
import "mod_say"
import "mod_grproc"

global
string c0;
string c1;
string c2;
char value;
end

PROCESS main()
BEGIN
     full_screen=false;
set_mode(320,240,16);
     set_fps(60,0);
   
write_var(0,10,100,3,c0);
write_var(0,10,150,3,c1);
write_var(0,10,200,3,c2);

loop
         if (key(_esc)) break; end
IF (scan_code<>0)
c0=c0 + ascii;
value = ascii;
c1=c1 +  value;
c2=c2 +  ( (char) ascii);
while (scan_code<>0) frame; end

END
         frame;
     end
     
     let_me_alone();
     exit(0,0);   
END

:D
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

y yo que te dije?

has comprobado lo que te dije... la excepcion (en el codigo del compilador) no esta trasladada al casteo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

ok, yo entendí que decías que no se podía sumar un char a un string y que estaba ahí el error y en el ejemplo anterior demostré que sí se podía y que el error estaba en el ahormado. No vi ninguna excepción pero si que al compilar veo esto
D:\devBennu\examples\mios\capturatecla\capturatecla.prg:37: error: Unsupported data type cast ("ASCII")
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

es lo que te digo... la excepcion es interna al compilador... o sea, una string y un numero por definicion no se pueden sumar... son diferentes tipos de datos... pero el lenguaje permite sumar un char a una string como si fuese una string de 1 caracter... pero esa excepcion no esta correcta en el caso de los casts... hay que meter eso...

se entendio ahora?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

sipo,gracias por tus explicaciones.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/