Subj : Some code i'm having problems with.
To   : joseph larsen
From : mark lewis
Date : Sat Feb 13 2016 10:45 am


13 Feb 16 00:50, you wrote to All:

jl> Here's some code. The problem is that I have to press the down arrow key
jl> twice before it executes the "bot_bar" procedure. If anyone could help, or
jl> take a look at it, i'd appreciate it.

some parts are missing for others to really be able to compile and test it...
what you should do is to simplify it into a standalone program and then work it
out using general items to replace things like the ans files and thisuer.name
and such... the following seems to work fine for me after attempting to trace
your logic flow...

==== Begin "readkey_test.pas"  ====
Program readkey_test;

Uses crt;

Var
 ch1 : char;
 ch2 : char;

Procedure show;
Begin
 writeln('      in show');
End;

Procedure bot_bar;
Begin
 writeln('    in bot_bar - display show? enter=no');
 ch2:=readkey;
 if ch2=#13 then begin
   writeln('    readkey=enter - exiting bot_bar');
   exit;
 end;
 show;
End;

Procedure top_bar;
Begin
 writeln('    in top_bar');
End;


Begin
 writeln('press uparr, dnarr or enter');
 Repeat
   writeln('in repeat block waiting on readkey');
   ch1:=ReadKey;
   case ch1 of
     #0 : begin
            writeln('readkey=nul - reading next key');
            ch1:=ReadKey;
            case ch1 of
              #72 : begin
                      writeln('  readkey=uparr');
                      top_bar;
                    end;
              #80 : begin
                      writeln('  readkey=dnarr');
                      bot_bar;
                    end;
            end; //case readkey
          end; //begin #0
   end; //case readkey
 until ch1=#13;
 writeln('readkey=enter - exiting program');
end.
==== End "readkey_test.pas" ====

remember to keep it simple and straightforward...

)\/(ark

Always Mount a Scratch Monkey

... If it's any good at all they will soon discontinue it.
---
* Origin:  (1:3634/12.73)