Hallo Roland,
Declare String b, Int anz
Cls
ClearList
b = "50,40,30,20,10"
Print "Unsortiert : "; b
anz = Move("StrToList", b, ",")
Print "Anzahl der hinzugefügten Strings : "; anz
SortList 5
b = Move("ListToStr", ",")
Print "Sortiert : "; b
Print "Anzahl der TeilStrings in b : "; Len(b, ",")
Print "Taste zum Beenden..."
WaitKey
End
Alles anzeigen
Ist zwar nicht unbedingt ein Bug, wenn man es weiß :
Move("StrToList", S, D) gibt als Anzahl 1 weniger zurück, als erwartet.
Move("ListToStr", S) gibt ein Komma zuviel zurück.
Sicherlich kann man ersteres umgehen, indem man mit GetCount(0)
die Anzahl ermittelt und im zweiten einfach das letzte Komma löscht.
Aber wenn schon Rückgabewerte der Move-Funktionen da sind, sollten
sie auch korrekte Werte zurückgeben.
Besonders, wenn das Funktionsergebnis automatisiert weiterverarbeitet
wird :
Declare String b, Int anz, z, Memory bereich
ClearList
b = "50,40,30,20,10"
anz = Move("StrToList", b, ",")
' hier ist aber die Anzahl 5, statt der ermittelten 4
' durch den Move - Befehl
Dim bereich, anz * 4
z = 0
SortList 5
Listbox$("", 0)
' -> hier sieht man, daß auch wirklich 5 Strings in der Liste sind
WhileLoop 0, @GetCount(0) -1
Long bereich, z = @Val(GetString$(0, &LOOP))
Inc z, 4
EndWhile
WaitKey
Dispose bereich
End
Alles anzeigen
Hier wird dann unnötigerweise versucht, über die Bereichsgrenze zu schreiben,
was natürlich eine Fehlermeldung verursacht, weil zu wenig Speicher gedimt
wurde. Auch die Funktionen
SubStr$(S1,N[,S2])
Len(S[, D])
liefern dann falsche Ergebnisse, wenn es um das letzte Element (Teilstring) geht.
Somit wäre es mehr ein Wunsch von mir, das in X3 und den FreeProfan -
Versionen zu korrigieren.