AppleScript显示对话框和数字数组

AppleScript显示对话框和数字数组,applescript,Applescript,这是一个相当基本的问题,但几乎没有AppleScript的经验。我想在显示对话框中列出一个数字数组,因此最终输出如下所示: Frame Count: 29 Frame Offsets: 12.684 15.909 28.841 46.332 etc. 不幸的是,我找不到任何这样的数字列表循环的例子,如果不先将它们全部转换为字符串,那么现在我将分别这样调用每个数字: display dialog "Frame Count: " & FrameCount & return &am

这是一个相当基本的问题,但几乎没有AppleScript的经验。我想在显示对话框中列出一个数字数组,因此最终输出如下所示:

Frame Count: 29

Frame Offsets:
12.684
15.909
28.841
46.332
etc.
不幸的是,我找不到任何这样的数字列表循环的例子,如果不先将它们全部转换为字符串,那么现在我将分别这样调用每个数字:

display dialog "Frame Count: " & FrameCount & return & return & "Frame Offsets: " & return & ((item 1 of DataList) / 1000) & return & ((item 2 of DataList) / 1000) & return & ((item 3 of DataList) / 1000)

这是非常不优雅的(并且具有挑战性,除非事先知道帧数)。有没有办法不用把这些数字转换成字符串就可以做到这一点?非常感谢您的帮助:-)

如果您有一个特定的格式,并且操作系统的默认设置不够好,那么就没有办法解决这个问题。您必须将列表转换为所需的特定格式的字符串,并将其显示在对话框中。

如果您考虑的是特定格式,并且操作系统默认值不够好,则无法解决此问题。您必须将列表转换为所需的特定格式的字符串,并在对话框中显示。

您必须将数字转换为字符串,但可以使用循环。以下代码适用于Instance:

set FrameCount to 29
set DataList to {12684, 15909, 28841, 46332}

set OffsetString to "Frame Offsets:" & return
repeat with off in DataList
    set OffsetString to OffsetString & (off / 1000) & return
end repeat

display dialog "Frame Count: " & FrameCount & return & return & OffsetString
在这里,您使用每个帧偏移量循环
DataList
,只需继续追加到
OffsetString
。注意,我没有做任何额外的字符串格式化;据我所知,这在AppleScript中是很难做到的。(例如,
12680
将变成
“12.68”
,而不是
“12.680”
,这可能是您想要的,也可能不是您想要的。)它并不华丽,但它与AppleScript一样优雅

repeat
循环具有多种功能;这是AppleScript唯一的循环构造,但它支持while循环、for循环、foreach循环和其他一些东西

  • 在。。。结束重复
    重复,直到。。。结束重复
    反复运行身体,直到
    分别为真或假
  • 使用from到[by]重复此操作。。。end repeat
    通过将
    增加
    直到其大于
    (将
    保留为默认值为
    按1
    )来重复运行主体
  • 重复次数。。。结束重复
    运行主体
  • 在中重复使用。。。end repeat(结束重复)
    等于
  • 重复。。。结束重复
    是一个无限循环(您可以使用退出重复
    离开它或其中任何一个)

您必须将数字转换为字符串,但可以使用循环。以下代码适用于Instance:

set FrameCount to 29
set DataList to {12684, 15909, 28841, 46332}

set OffsetString to "Frame Offsets:" & return
repeat with off in DataList
    set OffsetString to OffsetString & (off / 1000) & return
end repeat

display dialog "Frame Count: " & FrameCount & return & return & OffsetString
在这里,您使用每个帧偏移量循环
DataList
,只需继续追加到
OffsetString
。注意,我没有做任何额外的字符串格式化;据我所知,这在AppleScript中是很难做到的。(例如,
12680
将变成
“12.68”
,而不是
“12.680”
,这可能是您想要的,也可能不是您想要的。)它并不华丽,但它与AppleScript一样优雅

repeat
循环具有多种功能;这是AppleScript唯一的循环构造,但它支持while循环、for循环、foreach循环和其他一些东西

  • 在。。。结束重复
    重复,直到。。。结束重复
    反复运行身体,直到
    分别为真或假
  • 使用from到[by]重复此操作。。。end repeat
    通过将
    增加
    直到其大于
    (将
    保留为默认值为
    按1
    )来重复运行主体
  • 重复次数。。。结束重复
    运行主体
  • 在中重复使用。。。end repeat(结束重复)
    等于
  • 重复。。。结束重复
    是一个无限循环(您可以使用退出重复
    离开它或其中任何一个)

您可以使用AppleScript标准命令而不是
显示对话框
。此命令本机处理数字列表:

set theList to {12.684, 15.909, 28.841, 46.332}
choose from list theList with title "Frame Count: " & (length of theList) with prompt "Frame Offsets:"

您可以使用AppleScript标准命令代替显示对话框。此命令本机处理数字列表:

set theList to {12.684, 15.909, 28.841, 46.332}
choose from list theList with title "Frame Count: " & (length of theList) with prompt "Frame Offsets:"

这正是我要找的安塔尔。工作完美。感谢您提供的详细且非常有用的循环摘要:-)这正是我要寻找的Antal。工作完美。感谢您提供的详细且非常有用的循环摘要:-)谢谢Philip。我从之前的一篇文章中了解到,编写脚本桥似乎是绕过这些限制的唯一实用方法。它在我未来的“待办”学习清单上。感谢您的投入。@Bender:关于编写脚本桥的合理警告:如果您还不理解Applescript,编写脚本桥将是一个真正的挑战。这两者完全不同(这可能对你有利,事实上,因为你没有沉重的Applescript经验负担来阻碍你)。此外,在某些应用程序中,如Adobe Photoshop中,有些事情在SB中无法完成,而只能在AS中完成。恕我直言,SB不是一个经过深思熟虑的框架。谢谢Philip。我从之前的一篇文章中了解到,编写脚本桥似乎是绕过这些限制的唯一实用方法。它在我未来的“待办”学习清单上。感谢您的投入。@Bender:关于编写脚本桥的合理警告:如果您还不理解Applescript,编写脚本桥将是一个真正的挑战。这两者完全不同(这可能对你有利,事实上,因为你没有沉重的Applescript经验负担来阻碍你)。此外,在某些应用程序中,如Adobe Photoshop中,有些事情在SB中无法完成,而只能在AS中完成。依我拙见