Zitat von
Satty67:
Er weist q den Wert NIL (p^.ndfwd[k]) zu, was bei der nächsten Abfrage q^.ndKey dann halt schief geht.
Das liegt daran, das beim AnsiCompareText der String #255#255 < 'YYY' ist. Die Skiplist benötigt eine Markierung für das Listenende. Diese Markierung muss einen Schlüssel enthalten, der größer als alle anderen ist. Er wird im Initialization-Abschnitt erzeugt. Du musst also nur die CompareKeys-Methode so ändern, das sie immer 1 liefert, wenn aKey1 = <EndeMarkierung> ist.
Dann wird das Teil genauso langsam/schnell wie Eure Versionen. Das liegt dann wohl eindeutig am 'AnsiCompareString'.