Pascal/Turbo Pascal - ayuda con el teclado

 
Vista:

ayuda con el teclado

Publicado por Laysquad (47 intervenciones) el 01/12/2007 19:46:00
Hola que tal^^, aqui con una preguntilla.

nunca se han dado cuenta que si el buffer del teclado se llena, el programa se sale de pantalla completa, mmmm me explico:

por ejemplo: corran este programa, y cuando esté corriendo, mantengan presionada cualquier tecla.

program error ;
uses crt ;
begin
writeln('manten presionada una tecla') ;
delay(5000) ;
end ;

notaran que antes de que se cumplan los 5 segundos de espera, el programa saldrá de pantalla completa, ¿como puedo evitar esto?
necesito que alguien me diga como puedo mantener vacio el buffer del teclado o cambiar directamente el controlador del teclado, espero que me hayan entendido, porfavor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con el teclado

Publicado por Diego Romero (996 intervenciones) el 02/12/2007 04:50:15
¿Probaste este código sobre DOS o sobre Windows?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con el teclado

Publicado por Laysquad (47 intervenciones) el 02/12/2007 13:25:28
exactamente eso fué lo que hice pero no me funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con el teclado

Publicado por Diego Romero (996 intervenciones) el 02/12/2007 21:38:17
Tu respuesta no responde mi pregunta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:ayuda con el teclado

Publicado por Mechanic (177 intervenciones) el 05/12/2007 03:01:43
Hola Laysquad.
Mira, talvez te sirva algo de esto.
Saludos.

unit keyboard;
interface
Uses Crt, Dos;
Var
Oldint : Procedure;
Key : Array[1..128] Of Boolean;
wewe : Byte;

Procedure Newint; Interrupt;
Procedure SpecialKeyb;
Procedure NormalKeyb;

Implementation

Procedure Newint;
Begin
Key[Port[$60] Mod 128] := (Port[$60] < 128);
Asm
mov ax, 0C00h
int 21h
End;
asm
pushf
end;
Oldint;
End;

Procedure SpecialKeyb;
begin
Getintvec(9, @Oldint); Setintvec(9, @Newint);
end;

Procedure NormalKeyb;
begin
Setintvec(9, @Oldint);
end;
end.

----------------------------------------------------------------------------------------------

program prueba ;
uses crt, Keyboard;
var I : Integer;
begin
ClrScr;
SpecialKeyb;
writeln('manten presionada una tecla.. ESC para salir') ;
delay(2000);
repeat
For I := 1 to 256 do if Key[I] then Writeln('Presionaste la tecla ',I);
delay(300);
until Key[129];
NormalKeyb;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar