LoTROInterface

LoTROInterface (https://www.lotrointerface.com/forums/index.php)
-   Lua Programming Help (L) (https://www.lotrointerface.com/forums/forumdisplay.php?f=50)
-   -   ListBox number/string error (Help!) (https://www.lotrointerface.com/forums/showthread.php?t=1555)

Fortunis 07-06-2011 02:35 PM

ListBox number/string error (Help!) [SOLVED]
 
Heres the scenerio. Im making a Listbox for user input. The input range is 0-9999 and everything works according to plan with this until the next step.
Im placing an if-then-else-end statement in to check that no other characters/letters are used, for the listbox to be wiped clean and a message to the user that they inputted illegal data, but im getting 'attempt to compare number with nil' error.

Is there anything i can do to either allow the lua to ignore the error and carryon with the if-then-else-end statement or allow it to not do an error at all?

heres the code i have at the moment-

Code:

    ImageAmountInput:SetWantsKeyEvents( true );
   
    ImageAmountInput.KeyDown = function( sender, args )
       
        if args.Action == 162 then
            OpWindow:Activate();
            ImageAmountInput:SetSelection( 1, 4 );
            IAI = ImageAmountInput:GetText();
            IAI = tonumber( IAI );

            if  IAI >= 0 and IAI <= 9999 then -- ERROR produced here if non-numerical characters are used in user input box.
                ImageAmountInput:SetSelection( 0, 0 );
            else
                ImageAmountInput:SetText( "" );
                print ( "You entered an illegal entry" );
            end

        end

    end


MrJackdaw 07-06-2011 02:40 PM

You could always use a function to strip out the non-numeric characters and then check if it equals that which was entered.

Lua string tutorial at; http://lua-users.org/wiki/StringLibraryTutorial

Fortunis 07-06-2011 02:47 PM

Hehe, ive just added an if-then-end before it to check if its not tonumber( IAI ) :)

I guess the small break from staring at code gave me a little brain boost.

p.s. thanks for your fast response btw MrJackdaw :D



edit-


Code:

ImageAmountInput:SetWantsKeyEvents( true );
    ImageAmountInput.KeyDown = function( sender, args )
       
        if args.Action == 162 then
            OpWindow:Activate();
            ImageAmountInput:SetSelection(1, 4);
            IAI = ImageAmountInput:GetText();
            IAI = tonumber( IAI );
            if not tonumber( IAI ) then -- <--- Fixes everything
                ImageAmountInput:SetText( "" );
                print ( "You entered an illegal entry" );
            elseif  IAI >= 0 and IAI <= 9999 then -- ERROR produced here if string characters used in user input box. Need to figure out a way to ignore erroring.
                ImageAmountInput:SetSelection(0,0);
            end
        end
    end



All times are GMT -5. The time now is 08:55 AM.

vBulletin® - Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© MMOUI