Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

TComponentList.Sort --> Endlosschleife

  Alt 3. Jul 2009, 09:48
Hi!

Mein TComponentList.Sort (SortElement) wird niemals fertig. Kann mir jemand sagen, warum?

Delphi-Quellcode:
...
TLayout
private
    FCompareListItems:TListSortCompare;
published
    Objects: TComponentList;
public
...


function InternalSortLayout(Item1, Item2: Pointer): Integer;
begin
  Result := -1;

  if TLayoutElement(Item1).Top < TLayoutElement(Item2).Top then Result := -1;
  if TLayoutElement(Item1).Top > TLayoutElement(Item2).Top then Result := 1;

  if TLayoutElement(Item1).Top = TLayoutElement(Item2).Top then begin
    if length(TLayoutElement(Item1).Text) < Length(TLayoutElement(Item2).Text) then begin
      Result := -1;
    end else begin
      Result := 1;
    end;
  end;
end;

constructor TLayout.Create(_Owner: TComponent = NIL);
begin
  inherited Create(_Owner);
  Objects := TComponentList.Create(True);
  FCompareListItems := InternalSortLayout;
  ...
end;

procedure TLayout.SortElement;
begin
  if Objects.Count > 1 then begin
    Objects.Sort(FCompareListItems);
  end;
end;
Danke im Vorraus.
  Mit Zitat antworten Zitat