从内部调用时,AppleScript处理程序无法工作告诉Finder块

时间:2016-12-14 19:41:48

标签: error-handling applescript handler

学习使用AppleScript中的处理程序我遇到了一个问题。目前我已修剪我的应用程序以在运行时调用处理程序,但目前我收到错误:

error "Script Editor returned error -1708" number -1708

编译时我没有问题。当我尝试研究解决方案时,我无法找到在应用程序查找器下无法工作的原因。记住,我记得on run必须在应用程序中最后声明。

代码:

on checkForRebels(tieFighter, starDestroyer)
    display dialog "dark enough" as text
end checkForRebels

on run
    tell application "Finder"
        set the starDestroyer to (choose folder with prompt "Please select the Destroyer")
        set tieFighter to items of starDestroyer
        checkForRebels(tieFighter, starDestroyer)
    end tell
end run

我尝试搜索

  传递给处理程序

时,

applescript项会抛出错误

但是我回复了Apple的Working with Errors,但我没有回答我的问题。当我查看Apple的文档About Handlers时,我没有看到任何有关该问题应该是什么的内容。

当我将脚本修改为:

on checkForRebels(tieFighter, starDestroyer)
    display dialog "dark enough" as text
end checkForRebels

on run
    tell application "Finder"
        set the starDestroyer to (choose folder with prompt "Please select the Destroyer")
        set tieFighter to items of starDestroyer
    end tell
    checkForRebels(tieFighter, starDestroyer)
end run

它没有任何问题,但为什么处理程序checkForRebels()在应用程序Finder的告诉块中不起作用?当我调用一个处理程序时,我是否必须总是在应用程序之外执行它才能工作?

1 个答案:

答案 0 :(得分:2)

当您在tell块或其他处理程序中调用处理程序时,您需要指定“my”,否则它将在Finder dicitonary中查找该命令。

my checkForRebels(tieFighter, starDestroyer)

来自Applescript语言指南Calling Handlers in a tell Statement

  

要从tell语句中调用处理程序,必须使用   我或我的保留字表示处理程序是其中的一部分   脚本而不是应该发送到tell目标的命令   言。