Pascal/Turbo Pascal - Mi compilador no funciona o soy yo

   
Vista:

Mi compilador no funciona o soy yo

Publicado por Mechanic (181 intervenciones) el 08/12/2007 03:51:09
Realmente no se porqué no funciona el gotoxy
Gracias de antemano.

Uses Crt;
Var Y : Integer;
Tecla : Char;
begin
ClrScr;
Writeln('>Opcion 1');
Writeln(' Opcion 2');
Writeln(' Opcion 3');
Y := 10;
Repeat
If KeyPressed then
begin
Tecla := ReadKey;
if (Tecla = char(80)) or (Tecla = char(72)) then
begin
if Tecla = char(80) then Y := Y - 10;
if Tecla = char(72) then Y := Y + 10;
GotoXY(0,Y);
Write('>');
end;
end;
Until Tecla = char(27);
end.
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:Mi compilador no funciona o soy yo

Publicado por Diego Romero (997 intervenciones) el 08/12/2007 23:52:59
No existe la posición cero de la pantalla. ¿Qué intentas hacer?. Si quieres tomar la posición de la columna actual del cursor y que no se modifique entonces:

GotoXY(WhereX,Y);

Sería lo correcto.

También me parece que quieres detectar las teclas de cursor. Lo que haces no funciona como esperas porque las teclas de cursor primero envian el caracter cero y luego el código correspondiente.

Tecla := ReadKey;
if Tecla = #0 then
if (Tecla = #80) or (Tecla = #72) then
begin
if Tecla = #80 then Y := Y - 10;
if Tecla = #72 then Y := Y + 10;
GotoXY(WhereX,Y);
Write('>');
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

RE:Mi compilador no funciona o soy yo

Publicado por Mechanic (181 intervenciones) el 11/12/2007 02:31:15
Hola Diego;
Donde estaba mal era en que yo no sabía que no existe la posición cero de la pantalla en modo de texto. Gracias por eso.

Es que estoy acostumbrado a trabajar en modo gráfico y ahí si tengo la posición cero. Jajaja, estaba calculando 10 píxeles entre línea y línea, po eso el Y:= Y+10;

Pero observa cómo sí funciona a mi manera lo de las teclas del cursor!

Program Menus;
Uses Crt;
Var Y : Integer;
Tecla : Char;
begin
ClrScr;
Writeln(' Opcion 1');
Writeln('>Opcion 2');
Writeln(' Opcion 3');
Y := 2;
Repeat
If KeyPressed then
begin
Tecla := ReadKey;
if (Tecla = char(80)) or (Tecla = char(72)) then
begin
GotoXY(1,Y); TextColor(0); Write(' '); TextColor(7);
if Tecla = char(72) then Y := Y - 1;
if Tecla = char(80) then Y := Y + 1;
GotoXY(1,Y);
Write('>');
end;
end;
Until Tecla = char(27);
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