我有一個TList
其中'項目被許多for
-loops連續處理。我有時需要在列表中交換項目,以重新排列列表的視覺表示的順序(在StringGrid
中)。如何在for循環中交換TList項目
如何交換這些項目?
我初步的想法是:
- 在for循環,我認爲項目不應該被交換。
- 如果我在定時器的'
OnTimer
事件中進行交換,將定時器的間隔設置爲非常短的時間間隔(例如1毫秒),那麼我認爲for循環只有一個毫秒的間歇。
這項工作?還是有更好的選擇?
我有一個TList
其中'項目被許多for
-loops連續處理。我有時需要在列表中交換項目,以重新排列列表的視覺表示的順序(在StringGrid
中)。如何在for循環中交換TList項目
如何交換這些項目?
我初步的想法是:
OnTimer
事件中進行交換,將定時器的間隔設置爲非常短的時間間隔(例如1毫秒),那麼我認爲for循環只有一個毫秒的間歇。這項工作?還是有更好的選擇?
只要您確保TList
中的物品數量不會發生變化,在for-loop期間交換物品就會非常好。請注意,根據即將交換的物品的索引,某些物品可能無法處理或可能會被處理兩次。
如果交換操作沒有從for循環中調用,那麼已經啓動的for循環將運行直到完成。你不能指望用一個定時器「插入」,因爲定時器的消息將不會被處理,直到for循環和所有周圍的代碼完成。
因此,對於你的問題的解決方案可能是:
我要做的是由定時器#3。謝謝。 –
@JO這裏沒有定時器的地方。如果你能正確解釋問題,你會做得更好。 –
@DavidHeffernan我的問題是ngln完全解釋的。我使用了一個計時器,它運行良好,沒有突出的過載。謝謝。 –
我們不能按照陳述來理解你的問題。請擴大。最有可能包括更詳細的問題描述和裁減代碼。 –
當你說'我有時需要交換物品'時,如果你能更好地解釋你爲什麼要這樣做,那就太好了。你從中得到什麼?是否需要更改這些項目的順序,因爲處理一個項目可能取決於之前正在處理的另一個項目?是否有必要在每一個項目中處理所有項目,或者可以跳過某些項目,如果您要移動某些項目以使其新位置位於當前循環點之前,則可能會發生這些項目(項目將永遠不會被處理,因爲它被處理爲已經被處理)? – SilverWarior