Hallo.
Ich habe mir die TList abgeleitet, um ein automatisches Typecasting einzubauen. Das hat auch wunderbar geklappt. Nun habe ich aber Probleme mit der Sortierung der Liste, ich bekomme immer eine EAccessViolation, und der Code stoppt im Quicksort-Algorithmus. Hier mal der betreffende Codeschnipsel, vereinfacht.
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:
| type PDataSet = ^TDataSet; TDataSet = record a, b: Integer; s : String; end;
TData = class(TList) private function CompareValue(const I1, I2: Integer): Integer; public property Items[Index: Integer]: PDataSet read GetDataSet write PutDataSet; default; procedure SortBy1stValue; end;
var lstData: TData;
function TData.CompareValue(const I1, I2: Integer): Integer; begin if I1 > I2 then Result := 1 else if I2 > I1 then Result := -1 else Result := 0 end;
function DoSortBy1st(Item1, Item2: Pointer): Integer; begin Result := 1 end;
procedure TData.SortBy1st; begin Sort(@DoSortBy1st) end; |
Bestimmt sieht einer von Euch sofort den Fehler, der sich mir im Moment nicht erschließt.
Christian