【问题标题】:Can't delete this stack? - Livecode无法删除此堆栈? - 实时代码
【发布时间】:2014-05-16 04:57:25
【问题描述】:

我从主堆栈创建新堆栈,然后我想删除主堆栈。

我做不到。

这是我的代码:

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

我该怎么做?

谢谢

【问题讨论】:

  • 在这里尝试过,它可以工作。您收到什么错误消息?

标签: livecode


【解决方案1】:

试试这个:

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

这似乎在一个简单的测试中起作用。

【讨论】:

    【解决方案2】:

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

    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 处理程序放入堆栈级别的新堆栈中。它将在旧堆栈中的脚本完成运行时运行。

    【讨论】:

      【解决方案3】:

      也许您对从内存中删除堆栈和从机器中删除文件感到困惑。

      第一个确实如您所写,使用“删除堆栈”命令调用。

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

      【讨论】:

        【解决方案4】:

        如果删除堆栈的代码在对象或子堆栈内,我认为它一定会报错。因此,您可以尝试创建一个堆栈并将代码放入该堆栈,该堆栈是删除主堆栈的堆栈。示例:

        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

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

        【讨论】:

          猜你喜欢
          • 2019-09-01
          • 2018-07-20
          • 1970-01-01
          • 2018-11-23
          • 1970-01-01
          • 2013-12-12
          • 1970-01-01
          • 1970-01-01
          • 2014-08-12
          相关资源
          最近更新 更多