我有一个TList
'项目由许多for
- 循环连续处理。我有时需要在列表中交换项目以重新排列列表的可视化表示的顺序(在StringGrid
中)。
如何更换这些物品?
我的初步想法是:
OnTimer
事件,设置了定时器'间隔到很短的间隔(例如1毫秒),那么我认为for循环只有一毫秒的间歇。这会有用吗?或者有更好的选择吗?
答案 0 :(得分:2)
只要您确保TList
中的项目计数没有变化,在for循环期间交换项目就完全没问题了。请注意,根据即将交换的项目的索引,某些项目可能无法处理或可能会被处理两次。
如果没有从for循环中调用交换操作,那么已经启动的for循环将一直运行直到完成。您不能期望使用Timer“中断”,因为在完成for循环和所有周围代码之前,不会处理Timer的消息。
因此,您的问题的解决方案可能是: