1. HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Ed Wall <edwall6634 at msn.com> Aug 09, 2005
- 602 views
Programmer. I'm also into making wine and mead. I'm trying to write a very simple program to convert the cc's of sodium hydroxide used to the % of tartaric acid and the parts per thousand of sulfuric acid. But, I don't know what i'm doing. I just play with computers. Can some one help me solve this problem? The problem is that, besides a few bugs that need to be worked out, "I can do it!", I don't know how to multiply the information in the editText box with the other part of the formula. By viewing the code i'm sure that someone will either say i'm a complete idiot, or think that i'm doing ok for a newbee and help me with the simplist solution to this problem. Here's the code: I think the problem is in the procedure convert_CCSHTS(), i guess? I'm sure there could be a simpler code to write this program, it's just that I don't know it. Can anyone recommend a good book on this type of programming that I could get to help me become a better programmer? Any help will be much appreciated. Thank you. Peace, Bill -- This program computes tartaric and sulfuric acid contents of wine or mead must. -- Author: Swain Wall -- Date: August 4, 2005 -- Include library routine(s). include win32lib.ew -- Exclude warning. without warning with trace -- Declare integer(s). global integer counter -- Define integer(s). counter = 0 -- Declare sequence(s). sequence AllowedCharacters, checkCCSH -- Define sequence(s). AllowedCharacters = {46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57} -- Declare atom(s). atom top, left, height, width --Define atom(s). -- Set the size to one half of the screen's size. width = 0.5 height = 0.5 -- Set the top-lefthand corner so that the window is centered in the screen. top = (1 - height) / 2 left = (1 - width) / 2 -- Declare/Define constant(s). constant sulfuric = 1.6, tartaric = .25, -- Create MainWindow. MainWindow = create(Window, "Tartaric/Sulfuric Acid Conversion Program", 0, left, top, width, height, 0), -- Create MainWindow List(s) Heading(s). CCSHHead = create(LText, "CC's Sodium Hydroxide Used" , MainWindow, 25, 20, 150, 20, 0), PTAHead = create(LText, "Percentage of Tartaric Acid", MainWindow, 235, 20, 150, 20, 0), PPTSAHead = create(LText, "(PPT) of Sulfuric Acid" , MainWindow, 235, 80, 200, 20, 0), -- Create MainWindow Tartaric Acid input window. CCSH = create(EditText, "", MainWindow, 69, 40, 40, 20, 0), -- Create MainWindow List(s). PTAAnswer = create(LText, "" , MainWindow, 278, 40, 40, 20, 0), PPTSAAnswer = create(LText, "" , MainWindow, 278, 100, 40, 20, 0), -- Create MainWindow Acid Level Chart Heading(s). TW = create(LText, "Type of Wine", MainWindow, 25, 120, 80, 20, 0), PT = create(LText, "% Tartaric" , MainWindow, 120, 120, 80, 20, 0), PPTS = create(LText, "ppt Sulfuric", MainWindow, 200, 120, 80, 20, 0), -- Create MainWindow Acid Level Type of Wine index(s). wg = create(LText, "white grapes", MainWindow, 25, 140, 80, 20, 0), rg = create(LText, "red grapes" , MainWindow, 29, 160, 80, 20, 0), f = create(LText, "fruits" , MainWindow, 41, 180, 80, 20, 0), -- Create MainWindow Acid Level % Tartaric index(s). wgT = create(LText, ".65 - .75" , MainWindow, 122, 140, 80, 20, 0), rgT = create(LText, ".60 - .65" , MainWindow, 122, 160, 80, 20, 0), fT = create(LText, ".55 - .65" , MainWindow, 122, 180, 80, 20, 0), -- Create MainWindow Acid Level ppt Sulfuric index(s). wgS = create(LText, "4.2 - 4.9" , MainWindow, 206, 140, 80, 20, 0), rgS = create(LText, "3.9 - 4.2" , MainWindow, 206, 160, 80, 20, 0), fS = create(LText, "3.6 - 4.2" , MainWindow, 206, 180, 80, 20, 0), -- Create MainWindow Typical Acid Level Statement. TALS = create(LText, "Typical Acidity is 0.6% Tartaric or 4 ppt Sulfuric", MainWindow, 25, 200, 250, 20, 0), -- Create MainWindow Button(s). CTSA = create(Button, "Convert" , MainWindow, 165, 40, 60, 20, 0), ClearButton = create(Button, "Clear" , MainWindow, 340, 160, 40, 20, 0), ExitButton = create(Button, "Exit" , MainWindow, 340, 220, 40, 20, 0), -- Create MainWindow Statis Bar. SB = createEx(StatusBar, "Ready", MainWindow, 0, 0, 0, 0, 0, WS_EX_STATICEDGE) ---------------------------------------------------------------------- procedure onOpen_MainWindow() ---------------------------------------------------------------------- integer i i = sendMessage(CCSH, EM_LIMITTEXT, 3, 0) -- max 3 char. using EM_LIMITTEXT. end procedure ---------------------------------------------------------------------- procedure check_CCSH() ---------------------------------------------------------------------- -- Check for illegal character(s) entered. checkCCSH = getText(CCSH) for j = 1 to length(checkCCSH) do for k = 1 to length(AllowedCharacters) do if equal(checkCCSH[j], AllowedCharacters[k]) then counter = counter + 1 end if end for end for end procedure ---------------------------------------------------------------------- procedure convert_CCSHTS() ---------------------------------------------------------------------- -- If legal character(s) entered, then -- Convert CC's Sodium Hydroxide to precentage of Tartaric and ppt Sulfuric Acid. if counter = 3 then setText(PTAAnswer , getText(CCSH)) -- This is where I need to multiply tartaric -- setText(PTAAnswer, getText(C) * tartaric)) I tried this... -- setText(PTAAnswer, sprintf("%d", getText(C) * tartaric)) -- I tried this too setText(PPTSAAnswer, getText(CCSH)) -- This is where I need to multiply sulfuric setText(SB ,"Converted...") counter = 0 else -- Send user note to status bar, clear invalid entries and reset status bar. setText(SB, "Illegal Character(s) Entered") sleep(2) setText(CCSH, "") setText(SB , "Ready") counter = 0 end if end procedure ---------------------------------------------------------------------- procedure onKey_Convert(integer key, integer shift) ---------------------------------------------------------------------- -- Check for Enter Key Pressed. if key = 13 then -- Check for illegal character(s) entered into edit box. check_CCSH() -- Convert CCSH to Tataric/Sulfuric. convert_CCSHTS() end if end procedure ----------------------------------------------------------------------- procedure onClick_Convert() ----------------------------------------------------------------------- -- Check for illegal character(s) entered into edit box. check_CCSH() -- Convert CCSH to Tataric/Sulfuric. convert_CCSHTS() end procedure ----------------------------------------------------------------------- procedure onClick_Clear() ----------------------------------------------------------------------- -- Clear CCSH box, PTAAnswer and PPTSAAnswer. setText(CCSH , "") setText(PTAAnswer , "") setText(PPTSAAnswer, "") setText(SB , "Ready") end procedure closeWindow(MainWindow) end procedure -- Handle routine(s). onOpen[MainWindow] = routine_id("onOpen_MainWindow") onKeyPress[CCSH] = routine_id("onKey_Convert" ) onClick[CTSA] = routine_id("onClick_Convert" ) onClick[ClearButton] = routine_id("onClick_Clear" ) onClick[ExitButton] = routine_id("onClick_Exit" ) -- Give control to windows. WinMain(MainWindow, Normal) -- End Program.
2. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Ed Wall <edwall6634 at msn.com> Aug 09, 2005
- 536 views
Looks like, ---------------------------------------------------------------------- procedure onClick_Exit() ---------------------------------------------------------------------- didn't get copied, for some reason... but if u copy this code, and fix the above entry it will work to a degree, but it won't calculate the results. I use 2.4 (as CCSH, cc's sodium hydroxide used) and it should return .60 or .6.
3. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Pete Lomax <petelomax at blueyonder.co.uk> Aug 09, 2005
- 560 views
On Mon, 08 Aug 2005 22:45:18 -0700, Ed Wall <guest at RapidEuphoria.com> wrote: >I use 2.4 (as CCSH, cc's sodium hydroxide used) and it should return .60 or >.6. Try:
setText(PTAAnswer, sprintf("%3.2f",getNumber(CCSH)*tartaric)) setText(PPTSAAnswer, sprintf("%3.2f",getNumber(CCSH)*sulfuric))
Pete
4. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Greg Haberek <ghaberek at gmail.com> Aug 09, 2005
- 584 views
> didn't get copied, for some reason... but if u copy this code, and fix th= e > above entry it will work to a degree, but it won't calculate the results. > I use 2.4 (as CCSH, cc's sodium hydroxide used) and it should return .60 = or > .6. The problem is that getText() does just that -- it gets *TEXT* not numbers. You need to use getNumber(). Also, the onXXX[] syntax is quite out of date, use setHandler() instead. I made a few touch-ups to your code that you may find useful when using Win32Lib.
-- This program computes tartaric and sulfuric acid contents of wine or mead must. -- Author: Swain Wall -- Date: August 4, 2005 -- Include library routine(s). include win32lib.ew -- Exclude warning. without warning with trace -- Declare integer(s). --global integer counter -- Define integer(s). --counter = 0 -- Declare sequence(s). sequence AllowedCharacters, checkCCSH -- Define sequence(s). --AllowedCharacters = {46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57} AllowedCharacters = ".0123456789" -- Declare atom(s). --atom top, left, height, width --Define atom(s). -- Set the size to one half of the screen's size. --width = 0.5 --height = 0.5 -- Set the top-lefthand corner so that the window is centered in the screen= . --top = (1 - height) / 2 --left = (1 - width) / 2 -- Declare/Define constant(s). constant sulfuric = 1.6, tartaric = .25, -- Create MainWindow. --MainWindow = create(Window, "Tartaric/Sulfuric Acid Conversion Program", 0, left, top, width, height, 0), MainWindow = create(Window, "Tartaric/Sulfuric Acid Conversion Program", 0, Center, Center, 0.5, 0.5, 0), -- Create MainWindow List(s) Heading(s). CCSHHead = create(LText, "CC's Sodium Hydroxide Used" , MainWindow, 25, 20, 150, 20, 0), PTAHead = create(LText, "Percentage of Tartaric Acid", MainWindow, 235, 20, 150, 20, 0), PPTSAHead = create(LText, "(PPT) of Sulfuric Acid" , MainWindow, 235, 80, 200, 20, 0), -- Create MainWindow Tartaric Acid input window. CCSH = create(EditText, "", MainWindow, 69, 40, 40, 20, 0), -- Create MainWindow List(s). PTAAnswer = create(LText, "" , MainWindow, 278, 40, 40, 20, 0), PPTSAAnswer = create(LText, "" , MainWindow, 278, 100, 40, 20, 0), -- Create MainWindow Acid Level Chart Heading(s). TW = create(LText, "Type of Wine", MainWindow, 25, 120, 80, 20,= 0), PT = create(LText, "% Tartaric" , MainWindow, 120, 120, 80, 20,= 0), PPTS = create(LText, "ppt Sulfuric", MainWindow, 200, 120, 80, 20,= 0), -- Create MainWindow Acid Level Type of Wine index(s). wg = create(LText, "white grapes", MainWindow, 25, 140, 80, 20, = 0), rg = create(LText, "red grapes" , MainWindow, 29, 160, 80, 20, = 0), f = create(LText, "fruits" , MainWindow, 41, 180, 80, 20, = 0), -- Create MainWindow Acid Level % Tartaric index(s). wgT = create(LText, ".65 - .75" , MainWindow, 122, 140, 80, 20,= 0), rgT = create(LText, ".60 - .65" , MainWindow, 122, 160, 80, 20,= 0), fT = create(LText, ".55 - .65" , MainWindow, 122, 180, 80, 20,= 0), -- Create MainWindow Acid Level ppt Sulfuric index(s). wgS = create(LText, "4.2 - 4.9" , MainWindow, 206, 140, 80, 20,= 0), rgS = create(LText, "3.9 - 4.2" , MainWindow, 206, 160, 80, 20,= 0), fS = create(LText, "3.6 - 4.2" , MainWindow, 206, 180, 80, 20,= 0), -- Create MainWindow Typical Acid Level Statement. TALS = create(LText, "Typical Acidity is 0.6% Tartaric or 4 ppt Sulfuric", MainWindow, 25, 200, 250, 20, 0), -- Create MainWindow Button(s). CTSA = create(Button, "Convert" , MainWindow, 165, 40, 60, 20, = 0), ClearButton = create(Button, "Clear" , MainWindow, 340, 160, 40, 20, = 0), ExitButton = create(Button, "Exit" , MainWindow, 340, 220, 40, 20, = 0), -- Create MainWindow Statis Bar. SB = createEx(StatusBar, "Ready", MainWindow, 0, 0, 0, 0, 0, WS_EX_STATICEDGE) ---------------------------------------------------------------------- procedure onOpen_MainWindow(integer self, integer event, sequence params) ---------------------------------------------------------------------- --integer i --i = sendMessage(CCSH, EM_LIMITTEXT, 3, 0) -- max 3 char. using EM_LIMITTEXT. VOID = sendMessage(CCSH, EM_LIMITTEXT, 3, 0) -- max 3 char. using EM_LIMITTEXT. end procedure setHandler(MainWindow, w32HOpen, routine_id("onOpen_MainWindow")) ---------------------------------------------------------------------- procedure check_CCSH() ---------------------------------------------------------------------- -- -- Check for illegal character(s) entered. -- checkCCSH = getText(CCSH) -- for j = 1 to length(checkCCSH) do -- for k = 1 to length(AllowedCharacters) do -- if equal(checkCCSH[j], AllowedCharacters[k]) then -- counter = counter + 1 -- end if -- end for -- end for end procedure ---------------------------------------------------------------------- procedure convert_CCSHTS() ---------------------------------------------------------------------- atom ccsh sequence text -- If legal character(s) entered, then -- Convert CC's Sodium Hydroxide to precentage of Tartaric and ppt Sulfuric Acid. -- if counter = 3 then ccsh = getNumber(CCSH) text = sprintf("%3.2f%%", ccsh * tartaric) setText(PTAAnswer , text) -- This is where I need to multiply tart= aric text = sprintf("%3.2f", ccsh * sulfuric) setText(PPTSAAnswer, text) -- This is where I need to multiply sulf= uric setText(SB ,"Converted...") -- counter = 0 -- else -- Send user note to status bar, clear invalid entries and reset status bar. -- setText(SB, "Illegal Character(s) Entered") -- sleep(2) -- setText(CCSH, "") -- setText(SB , "Ready") -- counter = 0 -- end if end procedure ---------------------------------------------------------------------- procedure onKey_Convert(integer self, integer event, sequence params) ---------------------------------------------------------------------- integer key, shift key = params[1] shift = params[2] -- -- Check for Enter Key Pressed. -- if key = 13 then -- -- Check for illegal character(s) entered into edit box. -- check_CCSH() -- -- Convert CCSH to Tataric/Sulfuric. -- convert_CCSHTS() -- end if -- Check for Enter Key Pressed. if key = VK_ENTER then -- Convert CCSH to Tataric/Sulfuric. convert_CCSHTS() else -- Check for illegal character(s) entered into edit box. if not find(key, AllowedCharacters) then returnValue(-1) -- Disallow keypress return end if end if end procedure setHandler(CCSH, w32HKeyPress, routine_id("onKey_Convert")) ----------------------------------------------------------------------- procedure onClick_Convert(integer self, integer event, sequence params) ----------------------------------------------------------------------- -- Check for illegal character(s) entered into edit box. --check_CCSH() -- Convert CCSH to Tataric/Sulfuric. convert_CCSHTS() end procedure setHandler(CTSA, w32HClick, routine_id("onClick_Convert")) ----------------------------------------------------------------------- procedure onClick_Clear(integer self, integer event, sequence params) ----------------------------------------------------------------------- -- Clear CCSH box, PTAAnswer and PPTSAAnswer. setText(CCSH , "") setText(PTAAnswer , "") setText(PPTSAAnswer, "") setText(SB , "Ready") end procedure setHandler(ClearButton, w32HClick, routine_id("onClick_Clear")) ---------------------------------------------------------------------- procedure onClick_Exit(integer self, integer event, sequence params) ---------------------------------------------------------------------- closeWindow(MainWindow) end procedure setHandler(ExitButton, w32HClick, routine_id("onClick_Exit")) -- Handle routine(s). --onOpen[MainWindow] = routine_id("onOpen_MainWindow") --onKeyPress[CCSH] = routine_id("onKey_Convert" ) --onClick[CTSA] = routine_id("onClick_Convert" ) --onClick[ClearButton] = routine_id("onClick_Clear" ) --onClick[ExitButton] = routine_id("onClick_Exit" ) -- Give control to windows. WinMain(MainWindow, Normal)
~Greg
5. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Ed Wall <edwall6634 at msn.com> Aug 09, 2005
- 548 views
- Last edited Aug 10, 2005
I got your message. I had tried using setHandler on my first attempt, and that was the code I wanted to use, but I had problems with it, so I went the other route. I will try your code and if it works I will add your name to the new program. Thank you very much... Bill
6. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Ed Wall <edwall6634 at msn.com> Aug 09, 2005
- 541 views
- Last edited Aug 10, 2005
Pete, I will try your code. If it works I will add your name to the program. Keep in mind that I keep trying to improve and will always add the person(s) name(s) that help me with the code to my programs. Thanks, Bill
7. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Ed Wall <edwall6634 at msn.com> Aug 09, 2005
- 555 views
- Last edited Aug 10, 2005
I tried your code and it worked great. I added a few modifications. If you think that there wrong, please inform me. Heres the new program. -- This program computes tartaric and sulfuric acid contents of wine or mead must. -- From Greg Haberek August 9, 2005 -- Greg Haberek Modified this program for me. I have a file of the original program, and -- the program modified by Greg. -- Original Author: Swain Wall, modified by Greg Haberek and then re-modified by Swain Wall August, 9, 2005. -- Date: August 9, 2005 -- Include library routine(s). include win32lib.ew -- Exclude warning. without warning with trace -- Declare sequence(s). sequence AllowedCharacters, checkCCSH -- Define sequence(s). AllowedCharacters = ".0123456789" -- Declare/Define constant(s). constant sulfuric = 1.6, tartaric = .25, -- Create MainWindow. MainWindow = create(Window, "Tartaric/Sulfuric Acid Conversion Program ", 0, Center, Center, 0.5, 0.5, 0), -- Create MainWindow List(s) Heading(s). CCSHHead = create(LText, "CC's Sodium Hydroxide Used" , MainWindow, 25, 20, 150, 20, 0), PTAHead = create(LText, "Percentage of Tartaric Acid", MainWindow, 235, 20, 150, 20, 0), PPTSAHead = create(LText, "(PPT) of Sulfuric Acid" , MainWindow, 235, 80, 200, 20, 0), -- Create MainWindow Tartaric Acid input window. CCSH = create(EditText, "", MainWindow, 69, 40, 40, 20, 0), -- Create MainWindow List(s). PTAAnswer = create(LText, "" , MainWindow, 278, 40, 40, 20, 0), PPTSAAnswer = create(LText, "" , MainWindow, 278, 100, 40, 20, 0), -- Create MainWindow Acid Level Chart Heading(s). TW = create(LText, "Type of Wine", MainWindow, 25, 120, 80, 20,0), PT = create(LText, "% Tartaric" , MainWindow, 120, 120, 80, 20,0), PPTS = create(LText, "ppt Sulfuric", MainWindow, 200, 120, 80, 20,0), -- Create MainWindow Acid Level Type of Wine index(s). wg = create(LText, "white grapes", MainWindow, 25, 140, 80, 20, 0), rg = create(LText, "red grapes" , MainWindow, 29, 160, 80, 20, 0), f = create(LText, "fruits" , MainWindow, 41, 180, 80, 20, 0), -- Create MainWindow Acid Level % Tartaric index(s). wgT = create(LText, ".65 - .75" , MainWindow, 122, 140, 80, 20, 0), rgT = create(LText, ".60 - .65" , MainWindow, 122, 160, 80, 20, 0), fT = create(LText, ".55 - .65" , MainWindow, 122, 180, 80, 20, 0), -- Create MainWindow Acid Level ppt Sulfuric index(s). wgS = create(LText, "4.2 - 4.9" , MainWindow, 206, 140, 80, 20, 0), rgS = create(LText, "3.9 - 4.2" , MainWindow, 206, 160, 80, 20, 0), fS = create(LText, "3.6 - 4.2" , MainWindow, 206, 180, 80, 20, 0), -- Create MainWindow Typical Acid Level Statement. TALS = create(LText, "Typical Acidity is 0.6% Tartaric or 4 ppt Sulfuric", MainWindow, 25, 200, 250, 20, 0), -- Create MainWindow Button(s). CTSA = create(Button, "Convert" , MainWindow, 165, 40, 60, 20, 0), ClearButton = create(Button, "Clear" , MainWindow, 340, 160, 40, 20, 0), ExitButton = create(Button, "Exit" , MainWindow, 340, 220, 40, 20, 0), -- Create MainWindow Statis Bar. SB = createEx(StatusBar, "Ready", MainWindow, 0, 0, 0, 0, 0, WS_EX_STATICEDGE) ---------------------------------------------------------------------- procedure onOpen_MainWindow(integer self, integer event, sequence params) ---------------------------------------------------------------------- VOID = sendMessage(CCSH, EM_LIMITTEXT, 3, 0) end procedure ---------------------------------------------------------------------- procedure convert_CCSHTS() ---------------------------------------------------------------------- atom ccsh sequence text -- Convert CC's Sodium Hydroxide to precentage of Tartaric and ppt Sulfuric Acid. ccsh = getNumber(CCSH) text = sprintf("%3.2f%%" , ccsh * tartaric) setText(PTAAnswer , text) text = sprintf("%3.2f ppt", ccsh * sulfuric) setText(PPTSAAnswer, text) setText(SB ,"Converted...") end procedure ---------------------------------------------------------------------- procedure onKey_Convert(integer self, integer event, sequence params) ---------------------------------------------------------------------- integer key, shift key = params[1] shift = params[2] -- Check for Enter Key Pressed. if key = VK_ENTER then -- Convert CCSH to Tataric/Sulfuric. convert_CCSHTS() else -- Check for illegal character(s) entered into edit box. if not find(key, AllowedCharacters) then returnValue(-1) -- Disallow keypress return end if end if end procedure ----------------------------------------------------------------------- procedure onClick_Convert(integer self, integer event, sequence params) ----------------------------------------------------------------------- -- Convert CCSH to Tataric/Sulfuric. convert_CCSHTS() end procedure ----------------------------------------------------------------------- procedure onClick_Clear(integer self, integer event, sequence params) ----------------------------------------------------------------------- -- Clear CCSH box, PTAAnswer and PPTSAAnswer. setText(CCSH , "") setText(PTAAnswer , "") setText(PPTSAAnswer, "") setText(SB , "Ready") end procedure ---------------------------------------------------------------------- procedure onClick_Exit(integer self, integer event, sequence params) ---------------------------------------------------------------------- closeWindow(MainWindow) end procedure -- Handle routine(s). setHandler(MainWindow, w32HOpen, routine_id("onOpen_MainWindow")) setHandler(CCSH, w32HKeyPress, routine_id("onKey_Convert" )) setHandler(CTSA, w32HClick, routine_id("onClick_Convert" )) setHandler(ClearButton, w32HClick, routine_id("onClick_Clear" )) setHandler(ExitButton, w32HClick, routine_id("onClick_Exit" )) -- Give control to windows. WinMain(MainWindow, Normal) -- End Program. Thanks Greg, Bill P.S. Keep in touch, swwall at hotmail.com, i'll put you on my contacts list.
8. Re: HELP! I'm stupid.... novice "wanna be" or trying to be...
- Posted by Ed Wall <edwall6634 at msn.com> Aug 09, 2005
- 538 views
- Last edited Aug 10, 2005
Pete, I tried your code and it worked just fine, but I was look more for the answer that was given to me by Greg Haberek. It help to solve a lot of problems that I was going to have to work out. Thank you for your answer and help. I very much appreciate it. Thanks, Bill Feel free to drop me an e-mail if you want.