@szamot - a to rajzowanie wyjątku potrzebne jest?
Na pierwszy rzut ucha problem jest w tej linijce:
if IntToStr(e.nr) = item.SubItems.Text then
SubItems
to klasa TStrings, więc aby normalnie porównać jakąś daną z konkretną wartością w SubItems
, wypadało by porównania dokonać na konkretnej "komórce", a nie na sumie ich wszystkich w danym wierszu, którą otrzymuje się przez właściwość Text
;
Czyli jak już coś to tak:
if IntToStr(e^.nr) = Item.SubItems[0] then //SubItems[0] to druga komórka w wierszu
Poza tym konwersji e^.nr
dokonaj RAZ, a nie w każdym obiegu pętli; Wynik konwersji wpakuj do zmiennej i ją porównuj z subitemem komponentu;
I nie wiem czy zauważyłeś, ale w powyższym warunku masz błąd, bo nie używasz w e.nr
operatora odwołania do wartości - powinno być e^.nr
wszędzie tam, gdzie próbujesz uzyskać dostęp do pola struktury spod wskaźnika;
I nadal nie wiem co ma ten wątek wspólnego z komponentem TEdit
, o którym wspomniałeś w tytule wątku.
A jakbyś potrzebował szybsze rozwiązanie, to oprócz przechowywania liczb jako łańcuchy w SubItems
możesz dodatkowo skorzystać z TListItem.Data
do przechowania pojedynczej liczby (nie zajmującej więcej bajtów niż pointer) lub przypisać wskaźnik na jakąś strukturę, w której będą liczby; Dzięki temu samo wyszukiwanie będzie znacznie szybsze, a na wyświetlanie danych w komponencie to nie wpłynie.