51179


（以前の質問の続きです
[以前の質問](https://ja.stackoverflow.com/questions/50251/applescript%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6quicktime-
player%E3%81%A7%E3%83%A0%E3%83%BC%E3%83%93%E3%83%BC%E3%81%AE%E5%86%8D%E7%94%9F-%E5%81%9C%E6%AD%A2%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%97%E3%81%9F%E3%81%84)）

以下のコードにおいて，

  1. `endTime`が数値に変換可能で，かつ`startTime`より大きい場合に`repeat`を抜ける
  2. `loopCount`が1以上の場合に`repeat`を抜ける

という処理をしようとしているのですが，条件を満たしているように見える場合でも`exit repeat`が実行されません．  
長いのですが，書いているコードをすべて載せます．  
なぜ`exit repeat`が実行されないのかわかりません．  
どうぞご教授願います．

[code]

    choose file
    set fileName to result
    
    setStartTime("set start time (seconds)")
    on setStartTime(thePrompt)
        repeat
            display dialog thePrompt default answer ""
            set theString to text returned of result
            try
                set num to theString as number
                exit repeat
            end try
        end repeat
        return num
    end setStartTime
    set startTime to result
    
    setEndTime("set end time (seconds)")
    on setEndTime(thePrompt)
        repeat
            display dialog thePrompt default answer ""
            set theString to text returned of result
            try
                set num to theString as number
                if num > startTime then exit repeat
            end try
        end repeat
        return num
    end setEndTime
    set endTime to result
    
    setLoopCount("set how many times the video will be played")
    on setLoopCount(thePrompt)
        repeat
            display dialog thePrompt default answer ""
            set theString to text returned of result
            try
                set num to theString as integer
                if num >= 0 then exit repeat
            end try
        end repeat
        return num
    end setLoopCount
    set loopCount to result
    
    tell application "QuickTime Player"
        activate
        set tDoc to open fileName
        tell tDoc
            repeat while (loopCount > 0)
                set the presenting to true
                set current time to startTime
                play
                repeat while (current time < endTime)
                    delay 1
                end repeat
                set loopCount to (loopCount - 1)
            end repeat
            stop
        end tell
        close tDoc
    end tell
    
[/code]


CC BY-SA 4.0
2018-12-13T07:32:26.990
51170
2018-12-13T09:53:20.810
2018-12-13T08:05:08.913
23018
23018
question
applescript
applescriptで条件を満たす場合にrepeatを抜けたい

[code]

    setEndTime("set end time (seconds)")
    on setEndTime(thePrompt)
        (略)
    end setEndTime
    
[/code]

のスコープ(変数の有効範囲)に`startTime`という変数がないのが理由です。

[code]

    setEndTime("set end time (seconds)", startTime)
    on setEndTime(thePrompt, startTime)
    
[/code]

と、`setEndTime`に、`startTime`を引数で渡してあげれば動くようになると思います。


CC BY-SA 4.0
2018-12-13T09:53:20.810
51179
2018-12-13T09:53:20.810
14745
51170
answer