易语言控件数组删除末尾成员控件并不消失的bug的问题分析

为了实现动态添加图形按钮,我自然是创建了一个初始数组成员数为0的图形按钮数组。然后通过在需要的时候向其中加入成员来扩张数组成员数,然后复制已经存在的作为模板的图形按钮来得到任意数量图形按钮。部分代码示例如下:

图形按钮数量=图形按钮数量+1
加入成员(图形按钮数组,NULL)
复制窗口组件(模板图形按钮,图形按钮数组[图形按钮数量])

但是这样运行以后并不会有一个图形按钮添加进来,然后我发现“如果复制时被复制窗口组件所在的窗口已经被载入,该组件会被立即创建,但此时无论该组件的“可视”属性是真还是假,创建后的单元都将不会被显示,以便于用户进行属性调整。”

所以你还需要一句:

图形按钮数组[图形按钮数量].可视=真

===========================================

这本来没有什么问题,但是当你试图删除一些你动态添加的图形按钮时就出现了奇怪的问题。

这里我使用的是 删除成员(欲删除成员的数组,删除开始位置,删除数量),结果无论如何位于数组末尾的图形按钮都无法删除,而其他则正常删除。请看示例:

假设你动态创建了3个图形按钮:1 2 3。然后你要删除2,代码如下:

删除成员(图形按钮数组,2,1)

然后2就没了,数组变成了:1 3
然后你要删除3,代码如下:

删除成员(图形按钮数组,2,1)

然后3竟然还在。。。。
我不服,然后我要检查一下数组里还有几个图形按钮,代码如下:

信息框(取数组成员数(图形按钮数组))

结果他告诉我只剩下了一个。。。。
WTF?!我明明看见还有两个图形按钮的!!!

============================================

难道这个数组实际上只存了复制出来这些图形按钮的指针吗?!
但是如果是这样那么为什么我可以通过删除成员来删除 2 ?!

表示无法理解的谜一样的易语言。。无奈23333

大神求解释

标签:

不说点什么喵?

18 + 10 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据