1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- program testread;
- {uses crt;}
- var
- cadena,cadena2 : string;
- number : real;
- begin
- {clrscr;}
- cadena2 := 'Previous string';
- write ('Enter the string ');
- readln (cadena);
- writeln ('You entered ',cadena);
- writeln ('Previous string was ',cadena2);
- write ('Enter a number ');
- readln (number);
- writeln ('Number entered was ',number);
- readln;
- end.
- {(I have retyped now because my computer is not connected to the net, but I
- think that there are no errors).
- Now you can do some tests:
- 1- Compile and run the program as is (that is, using crt). You will find that
- a) the program does not erase the screen (that is normal because we have
- commented clrscr), but the cursor goes to the first line, thus overwriting the
- screen.
- b) While the program is expecting the string to be entered, some of the keys
- do not work correctly: Backspace advances some spaces (just like tab), tab key
- does not work and the cursor keys write garbage. (however this is only in the
- screen, because if you have erased a part of the string it will be actually
- erased).
- c) Once you have press return, the message 'You entered...' appears in the
- same line as the text entered.
- 2- Uncomment the clrscr call, cokpile and execute. Point a of test 1 will be
- solved (the screen is erased, so nothing is overwritten), but points b and c
- persist.
- 3- Comment 'uses crt' and 'clrscr'. Now you will not be using crt. Now:
- a) Point a of test 1 does not appear: the program begins to write in the
- next line, it does not overwrite anything.
- b) Now all the keys (tab, backspace..) work as expected.
- c) Now the message 'You entered...' appears in the following line, so point
- c of test 1 is also solved.
- d) BUT it writes only 'You entered', WITHOUT writing the string cadena (!).
- It writes also 'Previous string was previous string', so the problem is in
- readln and not in writeln.
- 4- To see if the problem is only in the string vars, uncomment the definition
- of number, and also the three lines at the end that deal with number. Now ld
- gives the following error message:
- testread.pp:0 (testread.o): undefined symbol READ_TEXT_INTEGER referenced from
- text segment.
- This error happens with 'uses crt' and also without it.
- 5- Define number as word. Regardless of crt we get the following error from ld:
- testread.pp:0 (testread.o): undefined symbol READ_TEXT_WORD referenced from
- text segment.
- 6- Uncomment 'uses crt' if it was commented, and change the definition of
- number as real. The program will compile, and it will print the number,
- although in the same line as the input.
- 7- Finally, comment 'uses crt' again. This time it will also compile and link,
- but it gives a runtime error!
- Laufzeitfehler 106 bei 66422
- This error is shown before printing the number.
- I expect that these bug report will be useful to debug the RTL. Tonight I will
- try to work in the blockwrite problem.
- Best regards
- Ramon
- --
- }
|