AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TList.Sort akzeptiert Vergleichsfunktion nicht
Thema durchsuchen
Ansicht
Themen-Optionen

TList.Sort akzeptiert Vergleichsfunktion nicht

Ein Thema von martin-sun · begonnen am 4. Okt 2004 · letzter Beitrag vom 5. Okt 2004
 
martin-sun

Registriert seit: 11. Aug 2004
Ort: Weinheim
15 Beiträge
 
Delphi 2005 Professional
 
#1

TList.Sort akzeptiert Vergleichsfunktion nicht

  Alt 4. Okt 2004, 17:44
hallo leute,

ich hab ein problem mit dem sortieren eines TList objektes. bisher habe ich immer nur die für die Sort-Funktion des TList objektes benötigte funktion (TListSortCompore) seperat in einer unit gehabt. das hat auch prima geklappt. diesmal bastel ich jedoch an einer komponente deren daten in einem TList objekt verwaltet werden (FFileList). für das sortieren muss ich auf daten in der klasse zurückgreifen (FSortBy, FSortUpDown). daher habe ich eine vergleichsroutine gebastelt, die genau dieses innerhalb der klasse tut (FCompareListItems).
das problem entsteht beim aufruf der sort-funktion:
Code:
FFileList.Sort(@FCompareListItems);
Der Compiler aktzeptiert die übergebene Funktion nicht mit der Fehlermeldung:
Code:
[Fehler] FileGrid.pas(377): Variable erforderlich
Befindet sich die funktion (FCompareListItem) ausserhalb der klasse, dann funktioniert es toll. Aber zum einen finde ich das nicht schön, da sie ja irgendwie in die klasse gehört und was viel schlimmer ist, von ausserhalb kann ich nicht auf die objektvariablen FSortBy und FSortUpDown zugreifen.

hat jemand ne ahnung wo das problem liegt oder was ich falsch mache?

martin

Delphi-Quellcode:
unit FileGrid;
interface

  TFileGrid = class(TDrawGrid)
  private
    FFileList: TList;
    FSortBy: Integer;
    FSortUpDown: Integer;
    function FCompareListItems(Item1, Item2: Pointer): Integer;
    procedure FOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  protected
  public
    constructor Create(AOwner:Tcomponent); override;
  end;

implementation

constructor TFileGrid.Create(AOwner: Tcomponent);
begin
   inherited;
   OnMouseDown := FOnMouseDown
   FFileList := TList.Create;
end;

procedure TFileGrid.FOnMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   ACol, ARow: Integer;
begin
   MouseToCell(X, Y, ACol, ARow);
   else if (ARow = 0) then begin
      FSortBy := ACol + 1;
      FFileList.Sort(@FCompareListItems);
   end;
end;
end.
  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 07:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz