
Habe mit Zahlen 100 - 125 fortlaufend (!) die Map gefüllt, Ausgabe mit ForEach ist dann nicht Start mit 100, sondern mit 120-125, danach beginnt er ab 100 hochzuzählen...
Gibt's eine Logik dahinter?
Auszug aus der PB-Hilfe hat geschrieben:Die Einfüge-Reihenfolge der Elemente wird beim Verwenden einer Map nicht gespeichert (anders als bei einer verknüpften Liste) und daher kann sie auch nicht sortiert werden.
Code: Alles auswählen
Country("A100")= ...
Country("A200")= ...
Country("A300")= ...
Code: Alles auswählen
Structure udtData
Name.s
Value.i
Random.i
EndStructure
Global NewList myData.udtData()
Global NewMap *myNamedData.udtData()
Debug "Create data ..."
Define i, name.s
For i = 0 To 10000
name = "A" + Str(i)
*pData = AddElement(myData())
myData()\Name = name
myData()\Value = i
myData()\Random = Random(5000, 1000)
*myNamedData(Name) = *pData
Next
Debug "List Data ..."
ForEach myData()
Debug myData()\Name + " Value = " + myData()\Value + " / Random = " + myData()\Random
If myData()\Value > 10
Break
EndIf
Next
Debug "Get data over name ..."
name = "A6"
If FindMapElement(*myNamedData(), name)
Debug myData()\Name + " Value = " + myData()\Value + " / Random = " + myData()\Random
Else
Debug name + " nicht gefunden"
EndIf
name = "A9999"
If FindMapElement(*myNamedData(), name)
Debug myData()\Name + " Value = " + myData()\Value + " / Random = " + myData()\Random
Else
Debug name + " nicht gefunden"
EndIf
name = "A10001"
If FindMapElement(*myNamedData(), name)
Debug myData()\Name + " Value = " + myData()\Value + " / Random = " + myData()\Random
Else
Debug name + " nicht gefunden"
EndIf
Debug "Delete data over index ..."
i = 5001
SelectElement(myData(), i)
Debug "Delete " + myData()\Name
DeleteMapElement(*myNamedData(), myData()\Name)
DeleteElement(myData())
Debug "Delete data over name ..."
name = "A5005"
If FindMapElement(*myNamedData(), name)
Debug "Delete " + name
*pData = *myNamedData()
ChangeCurrentElement(myData(), *pData)
DeleteElement(myData())
DeleteMapElement(*myNamedData())
EndIf
name = "A5005"
If FindMapElement(*myNamedData(), name)
Debug name + "Value = " + *myNamedData()\Value
Else
Debug name + " nicht gefunden"
EndIf
Debug "List Data ..."
SelectElement(myData(), 5000)
i = 1
Repeat
Debug myData()\Name + " Value = " + myData()\Value + " / Random = " + myData()\Random
i + 1
If i > 10
Break
EndIf
Until Not NextElement(myData())
SortStructuredList(myData(), #PB_Sort_Ascending, OffsetOf(udtData\Random), #PB_Integer)
Debug "List Sorted Data ..."
SelectElement(myData(), 5000)
i = 1
Repeat
Debug myData()\Name + " Value = " + myData()\Value + " / Random = " + myData()\Random
i + 1
If i > 10
Break
EndIf
Until Not NextElement(myData())
Debug "Get data over name ..."
name = "A5000"
If FindMapElement(*myNamedData(), name)
Debug name + " Value = " + *myNamedData()\Value
Else
Debug name + " nicht gefunden"
EndIf