Computer Science Canada [tutorial] error proofing |
Author: | djlenny_3000 [ Fri Oct 29, 2004 8:45 am ] | ||
Post subject: | [tutorial] error proofing | ||
for everyone who hates it when you need an integer but someone puts in a string here is a way to stop that the key is STRINT and STRINTOK here is an example var num :int put "enter a number and i will square it" get num put num*num if someone enters "s" the program crashes so here is how you fix that
strintok checks for the integer in the string and strint converts it, if you have a question then ask. also dont forget you can use strrealok ans strreal to go from string to real and realstr or intstr to go back to string hope this helped |
Author: | Delos [ Fri Oct 29, 2004 10:42 am ] |
Post subject: | |
Hmm...ok the good parts first: This is definitely an aspect of OOT that people new to it struggle to fix. This will be a good tutorial for people who need such help. Bad parts: First off, this was supposed to error proof (trap) the input. Sadly, this has only been restricted to catching errors in terms of int-string input. Try these inputs: Ctrl + Z A string/number of more than 255 characters long Both of these crash. In other words, you're not error proofed yet. Is this problem fixable? Of course it is, find out how and update your tutorial. |
Author: | sw1tch [ Sun Jan 02, 2005 4:21 pm ] |
Post subject: | |
Delos wrote: Hmm...ok the good parts first:
This is definitely an aspect of OOT that people new to it struggle to fix. This will be a good tutorial for people who need such help. Bad parts: First off, this was supposed to error proof (trap) the input. Sadly, this has only been restricted to catching errors in terms of int-string input. Try these inputs: Ctrl + Z A string/number of more than 255 characters long Both of these crash. In other words, you're not error proofed yet. Is this problem fixable? Of course it is, find out how and update your tutorial. Why dont you tell us sir? i'd Like to know |
Author: | Andy [ Sun Jan 02, 2005 7:08 pm ] | ||
Post subject: | |||
well to avoid the buffer overflow, simply use
|
Author: | Tony [ Sun Jan 02, 2005 9:44 pm ] |
Post subject: | |
you can write your own keyboard handling methods that are based on Input.KeyDown() |
Author: | lasworddeladreams [ Wed Dec 21, 2005 8:05 pm ] |
Post subject: | Strintok great but not working |
I'm in a grade 11 compsci class and we are using Turing v6.55 which resides on a DOS disk. We've been given the same task: Make our programs crashproof. Three so far have been able to figure it out (and to think I helped them!). I've tried for hours to try to get strintok to work but alas it doesn't. I think its a great command but i cant use it. Would someone please post telling me why the command wont work? Please? |
Author: | Cervantes [ Wed Dec 21, 2005 8:36 pm ] |
Post subject: | Re: Strintok great but not working |
lasworddeladreams wrote: Turing v6.55
Gah?! Turing goes up to v4.1, and v4.1 is not too much more than a rumour at the moment. lasworddeladreams wrote: Would someone please post telling me why the command wont work? Please?
That's a tough question, since it will work. The reason that you haven't got it to work is unknown to us, so long we can't see your code. |
Author: | do_pete [ Wed Dec 21, 2005 10:30 pm ] |
Post subject: | |
Perhaps the old DOS based Turing goes up to v.6? As for Turing 4.1 tomorow I'll post something that'll make you believe... |
Author: | lasworddeladreams [ Wed Dec 21, 2005 11:20 pm ] |
Post subject: | Thanks |
Many thanks to you Cervates and do_pete. I wasn't really expecting a reply to my post. Thanks again and as for my code here it is: var number : string var number1 : int get number : 255 loop exit when strintok(number) if number <= "/" or number >= ":" then put "This is not a number. Please try again." get number : 255 end if end loop number1 := strint(number) put number1 This is the modified version of the code our teacher gave us. Thanks again! |
Author: | McKenzie [ Wed Dec 21, 2005 11:20 pm ] |
Post subject: | |
Ouch... DOS version 6 ??? DOS version 8 came out about 6 years ago. I recall using 7.x about 11 years ago. Version 6 has to be at least 15 years old. |
Author: | McKenzie [ Wed Dec 21, 2005 11:25 pm ] |
Post subject: | |
As for the problem at hand, use getch, or getchar to check each character one at a time to make sure they are valid digits. Lastwords - get rid of your if in your loop "if number <= "/" or number >= ":" then" If it's a valid int the exit will kick you out of the loop. If you are still in the loop then you know it is invalid. |
Author: | do_pete [ Wed Dec 21, 2005 11:45 pm ] |
Post subject: | |
Yes you have to get rid of the if statement because it'll only ask for another number if the input is within that range. And dont bother with getch, get will work fine |
Author: | lasworddeladreams [ Thu Dec 22, 2005 7:47 am ] |
Post subject: | Thanks again! |
I'd like to thank you McKenzie and do_pete for your posts. I have since modified my program. Unfortunately, it still does not work. Turing keeps telling me that strintok has not been declared. Guess it's because we're using Turing v6.55 for MS-DOS v6.22. Anyway, following your instructions, I came up with this: var number : string var number1 : int loop get number : 255 exit when strintok(number) end loop number1 := strint(number) put number1 Thanks for all your help! |
Author: | Draymire [ Thu Nov 20, 2008 9:08 am ] |
Post subject: | RE:[tutorial] error proofing |
i Have found a way to crash proof a program completely from operations such as ctrl-z. use this simple yet effective program to do it var input:string(1) var output:string:="" loop getch (input) exit when input=chr(10)% a space put input .. output:=output+input exit when length(output)=255 end loop put"" put output the answer was the simple use of getch. if combined with the strintok commands you could completely idiot proof all your programs. |