0

純粋に実験として、AppleScript を使ってかなり複雑なことをしようとしています。ほとんどの場合、何よりも学術的な演習としてですが、問題が発生しています。これが何が起こっているかです。

まず、「ascr_code_library.scpt」という名前のコード ライブラリがあり、メソッドが 1 つだけ含まれています。

on return_string_position(this_item, this_str, delim)
    set old_delims to AppleScript's text item delimiters
    set AppleScript's text item delimiters to delim
    set this_list to text items of this_str
    set found_pos to 0
    repeat with i from 1 to the count of this_list
            if item i of this_list is equal to this_item then set found_pos to i
    end repeat
    set AppleScript's text item delimiters to old_delims
    return found_pos
end return_string_position

次に、このスクリプト「test-2.scpt」があります。それが行うことは非常に単純で、一目瞭然です。

set scr_lib to load script (choose file with prompt "Please pick a library")

tell scr_lib
    return_string_position("Who", "Who am I?", " ")
end tell

しかし、スクリプトを実行してファイルを選択すると、次のエラーが表示されます。

*“«data scpt4D617259332E303000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 . . . . . . . (など、5 ページに渡って続きます) . . . 1000101010CFADEDEAD» は return_string_position メッセージを理解していません。」*

それで、どこが間違っているのですか?私が知る限り、スクリプトは正しくロードされています。しかし、このような単純なスクリプトで他にどこが間違っているのでしょうか? メソッド呼び出しの前に「my」を付けてみましたが、それもうまくいきませんでした。何か案は?

4

1 に答える 1

0

As mentioned in your previous question, I like this script better because it avoids delimiters and returns each instance.

on return_string_position(this_item, this_str)
    set theWords to every word of this_str
    set matchedWords to {}
    repeat with i from 1 to count of theWords
        set aWord to item i of theWords
        if item i of theWords = this_item then set end of matchedWords to i
    end repeat
    return matchedWords
end return_string_position

return_string_position("very", "The coffee was very very very very very ... very hot.")

You can call the script like this:

run script file ((path to desktop as text) & "test 1.scpt") with parameters {"very", "The coffee was very very very very very ... very hot."}
于 2012-09-05T20:14:59.517 に答える