Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Running a string

in Questions Posts: 815

I have a string some like "2x + 5 ^ 2 * (3.5 + x)", so I already searched for it, and if I just knew what words I shall type in, etc. I already have replace X to an integer. How to calculate a string??????????????????????????????????????????????????????????????????

Comments

  • @TokOut use loadstring.
    E.g if you have thing = "(2x+5)^2 * (3.5+x)" (I think you need brackets around the 2x+5) then you can do:

    x = 3
    loadstring("value="..thing)()
    print(value)
    

    And also, one "?" should be enough.

  • dave1707dave1707 Mod
    Posts: 7,612

    @MattthewLXXIII Ignore my last post to you.

  • @dave1707 to me or TokOut?

  • dave1707dave1707 Mod
    edited October 2016 Posts: 7,612

    I guess it can be to both of you. When I replied, I ignored that the calculation was a string and that your loadstring was the correct answer. @TokOut I'm not sure why you even asked this question. Back in December, you wrote some code that used the loadstring command. You had to know what its purpose was then and how it was used to be able to use it in your code. I think you ask questions just so you don't have to waste time looking for an answer.

  • dave1707dave1707 Mod
    edited October 2016 Posts: 7,612

    @MattthewLXXIII @TokOut You need a * between the 2x i.e. 2 * x.

    function setup()
        thing = "2 * x + 5 ^ 2 * ( 3.5 + x )" 
        x = 3
        loadstring("value="..thing)()
        print(value)
    end
    
  • Posts: 815

    I am hearing of Loadstring for the first time ;( @dave1707. And I searched for "run", "running string", all I received was 5 ads

  • Posts: 815

    Does loadstring()() actually exists?

    GraphicsGet:60: attempt to call a nil value
    stack traceback:
        GraphicsGet:60: in method 'diagramTable'
        GraphicsGet:36: in method 'draw'
        Main:13: in function 'draw'
    

    There I had my Loadstring function

  • IgnatzIgnatz Mod
    Posts: 5,396

    Um, @TokOut, you have seen loadstring before - this is you writing in December last year

    Here is my calculator in 4 lines format:

    function draw()
    http.request("https://raw.githubusercontent.com/TokOut/InOneClass/master/CalculatorReleased.lua",function(d) loadstring(d)() setup() end,function(e) print(e)end) 
    end
    

    Did you notice the loadstring in there?

    See it for yourself
    https://codea.io/talk/discussion/7086/calculator-v1-0-project-released-now-2-0

    Re your question about loadstring()() - try actually READING some explanations of loadstring on the internet, before you ask. We don't have the time to teach you things you can find for yourself

  • Posts: 815

    I copied that Code from a rocket ship, and putted there my link. I didn't saw the function that times :P

  • dave1707dave1707 Mod
    Posts: 7,612

    @TokOut This is what you said then: Here is my calculator in 4 lines format:'. You didn't say that you copied it when you posted it. It would be helpful to us if you say that you copy code or you write it yourself. We help users based on how well we think they know how to write code. When you post large programs that work without errors, we assume you know what your doing and when you ask simple questions, we assume you're just being lazy.

  • edited October 2016 Posts: 815

    Okay, this is how I used loadstring:

        -- Create Table
        if not self.editing then
            local s = 40
            for r = 0, s * 2 do
                r = r - s
                local a = self.input
                a = a:gsub("x", r)
                if not a then
                    a = "x"
                end
                loadstring("c = " .. a)()
                table.insert(t, 1, vec2(x + r * self.size, y + c * self.size))
            end
    
            -- Dots from Table
            strokeWidth(0)
            fill(0, 65, 255, 255)
            clip(285, 150, 680, 600)
            for a, b in ipairs(t) do
                ellipse(b.x, b.y, 15)
            end
    
            -- Connect dots to graphic
            strokeWidth(2)
            fill(0, 65, 255, 255)
            for a, b in ipairs(t) do
                if not (a == #t) then
                    line(b.x, b.y, t[a+1].x, t[a+1].y)
                end
            end
        end
        clip()
    

    Question: If my Loadstring is wrong: "2x +" - not finished, it stops the project with this message:

    GraphicsGet:51: attempt to call a nil value
    stack traceback:
        GraphicsGet:51: in method 'draw'
        Main:13: in function 'draw'
    

    Line 51 is the Loadstring function

    How should I trade with Loadstring errors?

  • Posts: 2,020

    Check the Lua docs for pcall it stands for protected call.

Sign In or Register to comment.