AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TList Sort funktioniert nicht

Ein Thema von Errraddicator · begonnen am 8. Jul 2008 · letzter Beitrag vom 8. Jul 2008
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz