Please support our Pascal and Delphi advertiser: Programming Forums
Views: 2199 | Replies: 3 | Solved
![]() |
I was doing some coding today and came across a problem someone else faced and I couldnt answer it for them. I'll explain the concept in the little program below....
...Basically what the programmer wanted to do was do an error message if a word or even a char was entered instead of a number so the program doesnt crash like how its setup now.
I started to think well an easy way would be if there was a variable type that stored both integer, char and string. But I dont think there is one?
So the only idea I had was to do an IF Else statement where ELSE displays the error message and asks the user to enter a number this time. However since the value here is stored as an integer I wasnt sure how to get around this.
Any ideas/help would be greatly appreciated.
Program between;
uses crt;
Var
value: integer;
Begin
clrscr;
writeln('Please enter value');
readln(value);
readln
End....Basically what the programmer wanted to do was do an error message if a word or even a char was entered instead of a number so the program doesnt crash like how its setup now.
I started to think well an easy way would be if there was a variable type that stored both integer, char and string. But I dont think there is one?
So the only idea I had was to do an IF Else statement where ELSE displays the error message and asks the user to enter a number this time. However since the value here is stored as an integer I wasnt sure how to get around this.
Any ideas/help would be greatly appreciated.
Last edited by adotl : Apr 24th, 2007 at 11:57 am.
Seems theres a Val feature that basically converts strings into integers, Str does the opposite. Val in this example also has the third parameter as the error display.
program TriangleWait (input, output);
var
b, h: integer; {Base & Height}
A: real; {Area}
h_string : string; {Input string for Height}
Err : integer; {Error flag set by Val()}
begin
{------------Introduction & Setup------------------}
writeln('This program calculates and prints the area of a triangle');
writeln('after you enter their dimensions.');
writeln('When asked to, type in a dimension and hit the ENTER key.');
writeln;
{-------------------Inputting Data------------------}
{------User-Friendly------}
Repeat
write('What is the triangle''s base? ');
readln(b);
if b <= 0 then
writeln('The base needs to be GREATER than zero.')
Until b > 0;
{------VERY User-Friendly------}
Repeat
write('What is the triangle''s height? ');
readln(h_string);
val(h_string, h, Err);
if Err > 0 then
writeln('An illegal character was found at character #', Err, '.')
else if h <= 0 then
writeln('The height needs to be GREATER than zero.')
Until (h > 0) AND (Err = 0);
{-------------------Calculation------------------}
A := b * h / 2;
{-------------------Printing Results------------------}
writeln('The area of a triangle with a base of ', b:0, ' units and');
writeln('a height of ', h:0, ' units is ', A:0:1, ' square units.');
end. Last edited by adotl : Apr 24th, 2007 at 6:35 pm.
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)





. in delphi exist what you want, data type is called "variant".
Linear Mode