无法删除此堆栈? - 动态代码

时间:2014-05-16 04:57:26

标签: livecode

我从mainstack创建新堆栈,之后我想删除mainstack。

我不能。

这是我的代码:

create stack "newstack"
go to stack "newstack" 
delete stack "mainstack"

我该怎么办?

谢谢

4 个答案:

答案 0 :(得分:1)

试试这个:

local tStackID
put the long ID of this stack into tStackID
create stack "newstack"
go to stack "newstack" 
delete stack tStackID

这似乎适用于简单的测试。

答案 1 :(得分:0)

也许您对从内存中删除堆栈以及从计算机中删除文件感到困惑。

第一个确实是在您使用“删除堆栈”命令编写时调用的。

第二个需要使用“删除文件”命令,附加适当的路径名。

克雷格纽曼

答案 2 :(得分:0)

无法删除堆栈的原因可能是您的主堆栈脚本仍在运行。尝试将消息发送到新堆栈。这样,当需要删除旧堆栈中的脚本时,该脚本将不会运行。

on createNewStack
  local myStackID
  put the long ID of this stack into myStackID
  create stack "newstack"
  go to stack "newstack"
  send "deleteOldStack myStackID" to stack "newstack" in 0 secs
end createNewStack

on deleteOldStack theStackID
  delete stack theStackID
end deleteOldStack

例如,从createNewStack处理程序调用{​​{1}}。将mouseUpcreateNewStack处理程序放在相同的按钮,卡片或堆栈中(如果将mouseUp置于堆栈级别,则可以将createNewStack处理程序置于按钮级别,但它们必须位于同一堆栈中)。

mouseUp处理程序放入堆栈级别的新堆栈中。当旧堆栈中的脚本完成运行时,它将运行。

答案 3 :(得分:0)

如果除去堆栈的代码位于对象或子堆栈内部,则我认为它必须给出错误。因此,您可以尝试创建堆栈并将代码放到该堆栈中的操作,该代码将删除主堆栈。示例:

on mouseUp     local tStack     put the long id of this stack into tStack     create stack "NewStak"     set the script of stack "NewStak" to "on deleteMainStack; delete" & tStack & "; end deleteMainStack"     send "deleteMainStack" to stack "NewStak" in 0.1 sec end mouseUp

请注意,在创建子堆栈时,这是您的主堆栈的一部分。因此,如果删除主堆栈,它将删除其所有子堆栈。上面的代码创建了另一个主栈,并删除了我称之为的主栈。删除子堆栈的最小堆栈的一种方法是告诉它合并到自己的主堆栈中,然后删除前一个堆栈。仅在内存中而不是光盘中保留相同的名称,因为filename属性是它与其主堆栈的子堆栈。