Solved

Reading in Grahpics mode

Posted on 1998-11-06
5
232 Views
Last Modified: 2010-04-16
Hi

I am using Borland Pascal (DOS) version 7.0.  I wondered if it is possible to read from user while in graphics mode.  I mean just like Read and Readln in CRT mode.  If possible could anybody send example code.

Also anothe problem I have is I want to read a number from user, if I use integer or word and user presses a character the program will crash.  What is the best way to validate and make sure the program does not crash.

If answering please bear in mind that even though I do VB and C++ stuff, my Pascal knowledge is not that brilliant, therefore a little example code will help.

Thank you folks
0
Comment
Question by:gbzhhu
  • 2
  • 2
5 Comments
 
LVL 5

Accepted Solution

by:
scrapdog earned 50 total points
ID: 1215981
program blahblah;

var
  s :string;
  i,
  code :integer;

begin
  asm                        {these lines set graphics mode}
    mov ax,13h
    int 10h;
  end;
  readln(s);                 {this line reads a string}
  val(s,i,code);             {this line converts string s to integer i}
  if code <> 0 then writeln('error')
  else writeln(i);
  readln;
end.


Readln works in any graphics mode.  The question is whether or not it will write to the screen in the readln statement.  I know for sure that mode 13 will write to the screen, you can try it with other graphics modes too.  In any case, readln will always read what the user enters.

To answer your second question:

Always read anything the user types in into a string.  This will allows the user to enter anything without crashing the program.  After the string is read in, manually convert it to an integer using the Val procedure.  Val takes a string, and returns an integer, and another integer called Code.  You can validate whether or not the user's input was numeric by checking the value in code.  If code is not equal to zero, then there was an error.  (The value in code actually points to the position in the string where there was a nonumeric character).

Look at the code above to see how it works.


0
 
LVL 12

Author Comment

by:gbzhhu
ID: 1215982
Hi Scrapdog

The validation part of your answer works brilliant for me, however, the graphics part, I was using InitGraph statement to initialise graphics and I was using OutTextXy to write something on screen, but did not know what to use in order to read something from user while still in graphics mode.  Now readln works, but I would like to move the cursor to the position I want (somewhere in the screen) and then use readln.

Can you please have a look at the problem and see if you can help.  Is there a the equivalent in graphics mode of the following

gotoxy(12,22); readln(something);


Also I did not understand dthe assembly lines which initialise graphics (first time I have ever seen) what happened to InitGraph;  I mean the only help file I have with my Pascal is crap -- do you know a better one?

thanks again
0
 
LVL 5

Expert Comment

by:scrapdog
ID: 1215983
Let's see your source code.
0
 
LVL 7

Expert Comment

by:Motaz
ID: 1215984
Unfortunately there is no equevelant to ( gotoxy, readln ) in graphic mode, so that you must make your own gotoxy, readln procedures using readkey and OutTextXy and read any thing as string.

Motaz from Sudan.
0
 
LVL 7

Expert Comment

by:Motaz
ID: 1215985
I've fucntion that read string in graphic mode called ReadStr, you can find it in my unit which exist in my homepage :

http://members.wbs.net/homepages/a/z/z/azzoz.html

The unit called MGR.pas, you will find many examples use that unit.

You can call that function as :

St:=ReadStr(200,100,'',30);

st : string;
200 : X-cordinate
100 : Y-cordinate
''     : initial value of string
30  : maximum length of string you want to read.

If you want to set a colour for text and background you can use :

Colour(14,1);  { Yellow in Blue }

Motaz.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

A Short Story about the Best File Recovery Software – Acronis True Image 2017
What is Backup? Backup software creates one or more copies of the data on your digital devices in case your original data is lost or damaged. Different backup solutions protect different kinds of data and different combinations of devices. For e…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now