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.

Předmět Autor Datum
Zle som hľadal v helpe. Nevšimol som si CustomSort method (TStringList). Všimol som si iba Sort.:-[ nový
msx. 05.07.2006 21:56
msx.
Koukal jsem na tve minule vlakno ,pokud chces delat hru mel bych mozna pro tebe lepsi reseni nez pou… nový
virus 06.07.2006 00:25
virus
Moje vlákno týkajúce sa hry je niečo iné ako vlákno s grafmi, ktoré súvisí s týmto.;-) http://pc.por… nový
msx. 06.07.2006 00:45
msx.
Áno, gratulujem ! :-) Keď si nevieš dať rady pozri Help ! ::) Skutočne existuje metóda TStringList.… nový
pme 05.07.2006 22:11
pme
ako vas to moze bavit... mna to vobec nebavi ale budem musiet to vediet nový
majklx 05.07.2006 23:36
majklx
Je to ako keby si si programoval vlastnú frajerku. Skutočnú nenaprogramuješ, tak si mi programátori… nový
msx. 06.07.2006 00:48
msx.
Práveže, ja som help použil, ale akosi intuitívne som hľadal metódy na S (Sort a podobne), takže Cus… nový
msx. 06.07.2006 00:47
msx.
Tak jsem nasel primej link , muzes to otestovat . f047_001.htm nový
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

Koukal jsem na tve minule vlakno ,pokud chces delat hru mel bych mozna pro tebe lepsi reseni nez pouzit Timage, ale misto toho pouzit 3Dengine, je to vcelku jednoduchy a nenarocny .
Nemusi se to ani instalovat, neco jako je delphiX akorat stim rozdilem ze tuto componentu muzes sam rozsirovat , uz si nepamatuji kde jsem to stahl je to uz asi pres rok ale mam za to ze nazev je 3Dengine, nepotrebujes ani listview kterej na tento ucel je dost neforemnej.
Pokud nic nenajdes tak napis ja to hodim na download.

Moje vlákno týkajúce sa hry je niečo iné ako vlákno s grafmi, ktoré súvisí s týmto.;-)
http://pc.poradna.net/question/view/45467-delphi-ko mponenta-na-zobrazenie-grafiky-a-textu-s-podporou-s tlpcov-bez-deliacich-ciar

Čo sa hry týka, tam som použil TPanel a TImage a občas, keď sa mi chce, tak pridávam programový kód, ale hlavné je, že problém s presným umiestnením TImage je vyriešený.:-)

Áno, gratulujem ! :-) Keď si nevieš dať rady pozri Help ! ::)

Skutočne existuje metóda TStringList.CustomSort(Compare: TStringListSortCompare);

Delphi syntax:
type TStringListSortCompare = function(List: TStringList; Index1, Index2: Integer): Integer;

V nápovede je aj vysvetlené akú hodnotu má mať výsledok funkcie....

Práveže, ja som help použil, ale akosi intuitívne som hľadal metódy na S (Sort a podobne), takže CustomSort som nechtiac prehliadol. Ako som si potom neskoršie pozeral help, tak som ti to potom všimol, čiže toto vlákno som založil zbytočne, ale na druhej strane, možno sa toto vlákno niekomu bude hodiť, takže ho nemá zmysel mazať.:-)

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