1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| PROCEDURE tDVKList.Insert(myPointer: pointer); VAR MyNewObject: tDVKListItem; tmpResult: INTEGER; ifInserted: BOOLEAN; BEGIN IF (fAnkerAnfang = nil) OR (Count = 0) THEN BEGIN add(myPointer); END ELSE BEGIN MyNewObject := tDVKListItem.Create; MyNewObject.Data := myPointer; IF dvklsoSortOnInsert IN fSortOptions THEN BEGIN ifInserted := False; First; tmpResult := fFuncSortCompare(fLauf.Data, MyNewObject.Data); IF ((tmpResult > 0) AND (dvklsoAscending IN SortOptions)) OR ((tmpResult < 0) AND (dvklsoDesending IN SortOptions)) THEN BEGIN InsertBefore(MyNewObject, fLauf); ifInserted := True; END ELSE BEGIN WHILE (fLauf <> fAnkerEnde) DO BEGIN tmpResult := fFuncSortCompare(fLauf.Data, MyNewObject.Data); IF ((tmpResult > 0) AND (dvklsoAscending IN SortOptions)) OR ((tmpResult < 0) AND (dvklsoDesending IN SortOptions)) THEN BEGIN InsertBefore(MyNewObject, fLauf); ifInserted := True; break; END; Next; END; END; IF NOT ifInserted THEN InsertAfter(MyNewObject, fLauf); END ELSE BEGIN InsertAfter(MyNewObject, fLauf); END; END; END; |