Einzelnen Beitrag anzeigen

Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#1

TList Sort funktioniert nicht

  Alt 8. Jul 2008, 13:11
Hidiho,

ich hab mir, wie hier im Forum irgendwo beschrieben war, eine Sortierfunktion für eine TList von mir gebastelt.
Diese TList beinhaltet x TStringLists.

Gehe ich die Liste mit for durch, funktioniert das einwandfrei.
Sprich, ich kann jedes Element der TList problemlos in eine TStringList umwandeln und dann damit arbeiten.

In meiner Sortierfunktion klappt das aber komischerweise nicht, da stürzt er mir immer ab, wenn ich "item2" umwandeln möchte ("item1" funktioniert prächtig).

Hat wer ne Idee, woran das liegen könnte?
Das Sort wird übrigens in der gleichen Funktion aufgerufen, in der ich per For auf die Liste zugreife, also an sich müsste die TList da ok sein.

...

Hier noch mal der relevante Quelltext den ich verwende:
Delphi-Quellcode:
//...
type
  {*--- functions ---*}
  TSourceSorter = function(item1, item2: Pointer): Integer of object;
//...
  {*--- TfrmMain ---*}  
  TfrmMain = class(TForm)
  private
    sourceSorter: TSourceSorter;
    function compareSources(item1, item2: Pointer): Integer;
//...
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  sourceSorter := compareSources;
end;
//...
// builds the data-list based on the given source-list
function TfrmMain.buildDataList(sourceList: TList): TList;
begin
  sourceList.Sort(TListSortCompare(@sourceSorter)); // <- Abbruch!

  // loop through each source-set
  for sourceIdx := 0 to sourceList.Count - 1 do
  begin
    curSource := TStringList(sourceList[sourceIdx]); // <- Funktioniert einwandfrei
    sourceType := StrToInt(curSource[0]);
//...
// sorts the given source-sets
function TfrmMain.compareSources(item1, item2: Pointer): Integer;
begin
  // cast items to sets
  set1 := TStringList(item1);
  set2 := TStringList(item2); // <- Zugriffsverletzung

Danke im voraus

cu Patrick
  Mit Zitat antworten Zitat