Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - Ako urobiť používateľskú metódu na triedenie TStringList?

Keďže v mojom predchádzajúcom vlákne diskutujem sám a tu mám špecifickú otázku, tak som sa rozhodol založiť nové vlákno.

Ako urobiť používateľské hľadanie v TStringList? Ide mi o to, že chcem "nahradiť" metódu pre porovnanie textu, aby som dosiahol zoradenie podľa svojho uváženia.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak jsem nasel primej link , muzes to otestovat . f047_001.htm
virus 06.07.2006 00:45
virus
Nevyzerá to zle, ale na moje použitie je to ako kladivo so sekáčom miesto pinzety (mám na mysli jedn… nový
msx. 06.07.2006 00:52
msx.
Napiš, co budeš kódovat zítra, ať si to zatím nastudujeme. :-D;-) nový
Rce 06.07.2006 01:17
Rce
Už som napísal. TScrollBar.;-) nový
msx. 06.07.2006 08:32
msx.
Takže triedenie mám hotové: private ... function GraphSort(List: TStringList; Index1, Index2: Integ… nový
msx. 06.07.2006 13:17
msx.
Keďže mi to nešlo skompilovať, tak som pridal do sekcie public: function GraphSort: TStringListSort… nový
msx. 06.07.2006 15:14
msx.
Kazdy den nejaky problem s Delphi, ty musis toho vela programovat :-D poslední
Ixi 06.07.2006 17:59
Ixi

Nevyzerá to zle, ale na moje použitie je to ako kladivo so sekáčom miesto pinzety (mám na mysli jednoduchý graf, ktorý chcem robiť). Model aplikácie už mám v mysli hotový, takže už kódujem.:-)

Takže triedenie mám hotové:

private
  ...
  function GraphSort(List: TStringList; Index1, Index2: Integer): Integer;
  ...

Priradenie metódy mám v CreateForm:

begin
  ...
  Values.CustomSort(GraphSort);
end;

Pri kompilácii mi píše chybu na uvedenom riadku v CreateForm s týmto textom:

[Error] uGraph.pas(111): Incompatible types: 'regular procedure and method pointer'

Chyba bude asi v deklarácii, ale keďže to robím prvýkrát, tak netuším kde.

Edit:
Skúsil som aj zápis

function GraphSort: TStringListSortCompare;

ale bez úspechu.

Edit 2:
Zatiaľ skúsim nájsť v Delphi zdroják TStringList a kuknúť, ako je to priradené tam. Teda ak také priradenie existuje, nakoľko tam je štandardné triedenie.

Edit 3:
Takže našiel som SCompare, ale nikde som nenašiel deklaráciu.:-(

Edit 4:
Ach, som ja ale hlupák, veď do SCompare sa ukladá tá metóda pomocou CustomSort, tak idem na to znova.

Edit 5:
Takže táto metóda nesmie patriť objektu, inak mi to neskompiluje. Lenže teraz mi to síce skompiluje, ale zruti sa to na tom istom riadkou s chybou Access violation. Tak tomu nerozummiem.:-|

Edit 6:
Napadlo ma, že nemôžem priraďovať, keď som nevytvoril objekt TStringList a tak som priradil triedenie v metóde FormShow. Stále mám Access violation.:-(

Keďže mi to nešlo skompilovať, tak som pridal do sekcie public:

function GraphSort: TStringListSortCompare;

A to spôsobilo problém s access violation, pretože som to zabudol odstrániť. No čo, aj takáto primitívna chyba sa v programe občas nájde.:-[

Edit: Doprajem vám dovolenku a 2 týždne sem nenapíšem ani pol slova.:-)

Zpět do poradny Odpovědět na původní otázku Nahoru