@125:
Kein Problem!
@Zaphod:
Das mit der Liste hatte ich auch ausprobiert. Habe also anstatt eines Arrays eine LinkedList benutzt, aber das war dann bei vielen Einträgen (hier 10000) um 3-4 Sekunden langsamer, als mit einem Array:
Code: Alles auswählen
#Plist = 0
#Button = 1
NewList GadgetItem.s()
Procedure Randomize()
Protected CurrenID.l, GadgetItems.l
Start = ElapsedMilliseconds()
Gadgetitems = CountGadgetItems(#Plist) - 1
For i = 0 To Gadgetitems
AddElement(GadgetItem())
GadgetItem() = GetGadgetItemText(#Plist, i, 0)+Chr(10)+GetGadgetItemText(#Plist, i, 1)+Chr(10)+GetGadgetItemText(#Plist, i, 2)+Chr(10)+GetGadgetItemText(#Plist, i, 3)+Chr(10)+GetGadgetItemText(#Plist, i, 4)
Next
ClearGadgetItemList(#Plist)
Repeat
CurrentID = Random(CountList(GadgetItem()))
SelectElement(GadgetItem(), CurrentID)
AddGadgetItem(#Plist, -1, GadgetItem())
DeleteElement(GadgetItem())
Until CountGadgetItems(#Plist) = GadgetItems
Debug Str(ElapsedMilliseconds() - Start)+" ms"
EndProcedure
hwnd = OpenWindow(0, 0, 0, 500, 500, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Random List")
If hwnd
If CreateGadgetList(hwnd)
ListIconGadget(#Plist, 0, 0, 500, 425, "Column 1", 125, #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#Plist, 1, "Column 2", 125)
AddGadgetColumn(#Plist, 2, "Column 3", 125)
AddGadgetColumn(#Plist, 3, "Column 4", 121)
ButtonGadget(#Button, 200, 450, 100, 25, "Randomize")
EndIf
For a = 0 To 10000
AddGadgetItem(#Plist, -1, "Eintrag "+Str(a)+Chr(10)+"Spalte 2; "+"Eintrag "+Str(a)+Chr(10)+"Spalte 3; "+"Eintrag "+Str(a)+Chr(10)+"Spalte 4; "+"Eintrag "+Str(a))
Next a
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Button
Randomize()
EndSelect
Case #PB_Event_CloseWindow
Ende = 1
EndSelect
Until Ende = 1
End
EndIf
Gruß
Christian