How to detect a change in a global variable ?

scott at elementarysoftware.com scott at elementarysoftware.com
Sat Jul 26 04:59:08 EDT 2025


The way that the loop is written would make it blocking. If you wanted the loop to start running and then stop after the mouseUp happens I think you would need to add a "wait x millisec with messages” 

Fo example:

global myVar

on elsoTester
    put 0 into myVar
    -- some code
    repeat until myVar > 0
         --  set the thumbPosition of scrollBar "ProgressBar" to (the thumbPosition of scrollBar "ProgressBar" + 5)  --   testing
        wait 500 millisec with messages
    end repeat
    -- some code
    answer "Finished"
end elsoTester


 Depending on what you are doing, another method would be to use a "send it time" mechanism where the handler keeps calling itself until myVar > 0 
For example:


local sFlag
global myVar

command elsoTester
    if sFlag is empty then
        put 0 into myVar
       -- some code
    end if

    repeat until myVar > 0
          --  set the thumbPosition of scrollBar "ProgressBar" to (the thumbPosition of scrollBar "ProgressBar" + 5)   --   testing
         put “waiting” into sFlag
         send elsoTester to me in 500 millisec
         exit elsoTester
    end repeat

    answer “Finished"
end elsoTester

To be thorough  you might also might want to empty the message queue of any other elsoTester messages before sending in time or add a timer which will eventually time out if myVar doesn’t exceed 0 after a set time.

--
Scott Morrow

Elementary Software
(Now with 20% less chalk dust!)
web       https://elementarysoftware.com/
email     scott at elementarysoftware.com
booth    1-360-734-4701
------------------------------------------------------

> On Jul 26, 2025, at 12:44 AM, jbv via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> Hi list,
> 
> Let's say I have a portion of a script like this :
> 
>  global myVar
>  put 0 into myVar
>  -- some code
>  repeat until myVar > 0
>  end repeat
>  -- some code
> 
> and the content of global myVar being changed
> in a handler of another control :
> 
>  on mouseUp
>    global myVar
>    put 1 into myVar
>  end mouseUp
> 
> I know this is not very elegant, but my question is :
> can the change in myVar be detected in a loop like
> above ?
> I made some tests and it doesn't seem to work...
> 
> Thank you in advance.
> jbv
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode










More information about the use-livecode mailing list