1. modified prompt_functions
- Posted by Kenneth Rhodes <krhodes at CYBERSOUTH.COM> Jan 23, 1999
- 464 views
Robert Craig writes: "My intention with prompt_number() is to provide beginners with something easy to use in simple programs. I don't want to complicate it with lots of extra options and parameters. If it doesn't do exactly what you want, feel free to copy it, rename it, and enhance it to suit your purposes." Thanks, Robert, as always I appreciated your graciousness and patience with me. I am a beginner, as my clutsy efforts to amend prompt_number() clearly shows. However, I think it would be best, if at all possible, to provide a robust function which would not have to be re-written or modified by any one, beginner or novice. In the case of the function prompt_number() It seems to me that is far less complicated (for the language user) to have a function that prevents errors as opposed to returning an error message at some place on the screen which will have to be erased and then the cursor repositioned for input. Programming the function to erase the invalid data input and reposition would not complicate the use of the function for beginners. It makes the function very simple to use. I actually agree with Robert about complicating the function with extra parameters. However placing the cursor screen position coordinates in the function seems to kill several birds with one stone - its more economical for the programmer by reducing the number of statements and lines, and less typing. Moreover, it allows me to reposition the cursor without using "get_position()" which would require including "graphics.e". Anyway, I discovered that my prompt_n() as previously sumbitted to the list only worked if the prompt started at column 1. So here is the revised function. -- -- ------------------------------- prompt.e ------------------------------- -- (modifications to Euphoria 2.1 prompt functions) -- revised 01/22/99 -- -- -- prompt_n(), a modification of prompt_number() -- syntax: include get. -- include prompt.e -- a = prompt_number(pos,st,s) -- -- Description: Prompt the user to enter a number. pos is a sequence of 2 -- values {line, column} representing the screen coordinates -- ( i.e. position(line, column) ) where the prompt text (sequence st) -- will be displayed. The third parameter "s" is a sequence of -- two values {lower, upper} which determine the range of values -- that the user may enter. If the user enters a number that is -- less than the lower or greater than the upper, or if the -- the user enters a letter instead of a number, the invalid -- input string will be erased and the cursor reset at the input -- position. No error message will be issued. -- -- example: age = prompt_n({4,1},"What is your age? ", {0,150}) -- the input prompt, "What is your age? " is printed at position(4,1) -- -- global function prompt_n(sequence pos,sequence prompt, sequence range) -- Prompt the user to enter a number. -- A range of allowed values may be specified. object answer sequence buffer -- holds length of input while 1 do position(pos[1],pos[2]) puts(1, prompt) buffer = gets(0) -- make sure whole line is read answer = value(buffer) if answer[1] != GET_SUCCESS or sequence(answer[2]) then position(pos[1],pos[2]) for x = 1 to length(buffer) + length(prompt) do puts(1, " ") end for else if length(range) = 2 then if range[1] <= answer[2] and answer[2] <= range[2] then return answer[2] else for x = 1 to length(buffer) + length(prompt) do puts(1, " ") end for end if else return answer[2] end if end if end while end function -- -- -- prompt_s() - a modification of prompt_string() -- syntax: include get.e -- include prompt.e -- a =prompt_s(pos,st) -- first parameter is a 2 element seqence for line and column coordinates -- 2nd parameter is the prompt string -- example: answer = prompt_s({4,2}, "Is today your birthday? ") -- (prompt text is printed at the 4th line, 2nd column) -- -- global function prompt_s(sequence pos, sequence prompt) -- Prompt the user to enter a string object answer position(pos[1], pos[2]) puts(1,prompt) answer = gets(0) if sequence(answer) and length(answer)>0 then return answer[1..length(answer)-1] -- trim the \n else return "" end if end function -- -- Kenneth Rhodes Lyons, GA
2. Re: modified prompt_functions
- Posted by Falkon1313 <falkon1313 at AOL.COM> Jan 28, 1999
- 434 views
Heya, mailing-list people! Good to see Euphoria's still growing and developing. Can't wait to try out the new version... This is somethin' I wrote to input a string, which can be used as either a prompt-style function, or as part of a simple SLE. I suppose it could be modified to guarantee a valid numerical entry, but I haven't done that yet. Works only in text modes. Handles the following keys: ESC, Backspace, Enter, Left and Right Arrow, Insert, Delete, Home, and End. Can be placed at specific coordinates. Can be limited in visual size. (You're screen may be 80 characters wide, but you only want the input field to be 40 characters wide.) Can be limited in input size (or unlimited). Can be masked with the character of your choice for passwords. If the text length is > the visible length, uses horizontal scrolling so as to stay within the visible boundaries. Could probably use some tweakin', but I smashed all the bugs I've noticed... Okay, it uses another include of mine...I'll upload it to the web and post a link to save e-mail space. http://members.aol.com/falkon1313/programming/inptstr.zip (6029 bytes) Hope somebody gets some use out of that. Falkon
3. Re: modified prompt_functions
- Posted by Kenneth Rhodes <krhodes at CYBERSOUTH.COM> Jan 28, 1999
- 438 views
- Last edited Jan 29, 1999
----- Original Message ----- From: Falkon1313 <falkon1313 at AOL.COM> To: <EUPHORIA at LISTSERV.MUOHIO.EDU> Sent: Thursday, January 28, 1999 1:21 AM Subject: Re: modified prompt_functions >Heya, mailing-list people! Good to see Euphoria's still growing and developing. Can't wait to try out the new version... > > This is somethin' I wrote to input a string, which can be used as either a prompt-style function, or as part of a simple SLE. I suppose it could be modified to guarantee a valid numerical entry, but I haven't done that yet. Works only in text modes. >Handles the following keys: >ESC, Backspace, Enter, Left and Right Arrow, Insert, Delete, Home, and End. >Can be placed at specific coordinates. >Can be limited in visual size. (You're screen may be 80 characters wide, but you only want the input field to be 40 characters wide.) >Can be limited in input size (or unlimited). >Can be masked with the character of your choice for passwords. >If the text length is > the visible length, uses horizontal scrolling so as to stay within the visible boundaries. > >Could probably use some tweakin', but I smashed all the bugs I've noticed... > >Okay, it uses another include of mine...I'll upload it to the web and post a link to save e-mail space. > >http://members.aol.com/falkon1313/programming/inptstr.zip (6029 bytes) > >Hope somebody gets some use out of that. >Falkon >