【发布时间】:2014-05-16 04:57:25
【问题描述】:
我从主堆栈创建新堆栈,然后我想删除主堆栈。
我做不到。
这是我的代码:
create stack "newstack"
go to stack "newstack"
delete stack "mainstack"
我该怎么做?
谢谢
【问题讨论】:
-
在这里尝试过,它可以工作。您收到什么错误消息?
标签: livecode
我从主堆栈创建新堆栈,然后我想删除主堆栈。
我做不到。
这是我的代码:
create stack "newstack"
go to stack "newstack"
delete stack "mainstack"
我该怎么做?
谢谢
【问题讨论】:
标签: livecode
试试这个:
local tStackID
put the long ID of this stack into tStackID
create stack "newstack"
go to stack "newstack"
delete stack tStackID
这似乎在一个简单的测试中起作用。
【讨论】:
无法删除堆栈的原因可能是您的主堆栈的脚本仍在运行。尝试向新堆栈发送消息。这样一来,在需要删除旧堆栈时,不会运行旧堆栈中的任何脚本。
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
例如,从 mouseUp 处理程序调用 createNewStack。将createNewStack 放在与mouseUp 处理程序相同的按钮、卡片或堆栈中(如果您将createNewStack 放在堆栈级别,您可以将mouseUp 处理程序放在按钮级别,但它们必须位于相同的堆)。
将deleteOldStack 处理程序放入堆栈级别的新堆栈中。它将在旧堆栈中的脚本完成运行时运行。
【讨论】:
也许您对从内存中删除堆栈和从机器中删除文件感到困惑。
第一个确实如您所写,使用“删除堆栈”命令调用。
第二个需要使用“删除文件”命令,附加适当的路径名。
【讨论】:
如果删除堆栈的代码在对象或子堆栈内,我认为它一定会报错。因此,您可以尝试创建一个堆栈并将代码放入该堆栈,该堆栈是删除主堆栈的堆栈。示例:
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
请注意,在创建子堆栈时,这是您的主堆栈的一部分。因此,如果您删除主堆栈,它将删除其所有子堆栈。上面的代码创建了另一个主堆栈并删除了我调用它的那个。删除子堆栈的最小堆栈的一种方法是告诉它合并到自己的主堆栈中,然后删除前一个。仅在内存中而不是在磁盘中保持相同,因为文件名属性是子堆栈,它与其主堆栈的属性相同。
【讨论】: