¿Como leo un caracter de la pantalla?



La pregunta esta muy clara, se supone que por algun motivo necesito saber que caracter o caracteres estan visualizados en la pantalla en algun momento.

Bueno, a mi la verdad no se me ocurre ningun problema para esta solucion, pero ya he visto esta pregunta dos veces asi que tal vez nos pueda servir algun dia.

El siguiente codigo fue escrito por nuestro amigo Diego Romero.

ch=record
   car,att:byte;
end;

linmemvideo=array[1..80] of ch;
pantmemvideo=array[1..25] of linmemvideo;

var
    pantalla:pantmemvideo absolute $b800:00;
    A: char;

begin
    A:=chr(Pantalla[1][1].car);
end;

Esta es la explicacion que el da:

Lo que hice fué crear una estructura igual a la de la memoria de video en modo texto de 80 x 25 y fuerzo que se cree en la posición de esa memoria ($b800:00), sin más la matriz así creada es la pantalla no tenga mas que asignar la posición que deseo a una variable char y listo.


El programa de abajo, es un pequeño ejemplo de como funciona el codigo, las lineas marcadas con **, son lineas que yo añadi.

Program Leer_Caracteres; {**}
uses crt; {**}

type {**}
     ch=record
     car,att:byte;
     end;

     linmemvideo=array[1..80] of ch;
     pantmemvideo=array[1..25] of linmemvideo;

var
     pantalla:pantmemvideo absolute $b800:00;
     A: char;
     j,i:byte; {**}

begin
clrscr; {**}

     for j:=1 to 3 do
       for i:=1 to 255 do
           write(chr(i));

{El primer numero indica las filas, el segundo las columnas}
     A:=chr(Pantalla[1][1].car);

     gotoxy(1,24);{**}
     write(a); {**}

readkey;{**}
end.

El programa escribe en la pantalla, 3 veces todos los caracteres del codigo ASCII, cambiando las coordenadas en la linea " A:=chr(Pantalla[1][1].car) ", se puede obtener el caracter de la coordenada deseada.

Baja el Codigo fuente
leecar.zip


Regresar


inicio
Si llegaste a esta pagina desde un buscador
haz click aqui para ir a la pagina principal