Witam wszystkich.

Od miesiąca piszę aplikację klient-serwer dla firmy mającą na celu wysyłanie raportów błędów znalezionych podczas produkcji do ListView na serwer przez sieć (Sockety) .

Opis działania:
Klient wysyła do serwera polecenie oddzielone znakami ';', które serwer rozdziela i wstawia każde słowo po znaku ';' do osobnej kolumny ListView-a.

Przykład:
Wysyłanie:

Socket.SendText('@SEND_ITEM' + caption + ';' + 'kolumna1' + ';' + 'Kolumna2'... + ';'); 

<b>Odbieranie:</b>
```delphi
var
  s: string;
begin
  s := Socket.RecieveText;

if pos('@SEND_ITEM', s) = 1 then //jesli w poleceniu jest wyraz @SEND_ITEM to...
begin
  s := Copy(s,11,length(s)); //Wyrnij go i zostaw resztę

  Explode(s, ';'); //funkcja dzieli polecenie i dodaje pozycje do StringListy -> ItemList.

  AddItem(ItemList.Strings[0], ItemList.Strings[1], ItemList.Strings[2]..); //Procedura dodająca itemy do ListView.
end;


<b>Problem:</b>
1. Chciałbym zastosować funkcję, która zliczała by ilość powtarzających się błędów typu string np. z kolumny 2.
2. Po wykrytych TRZECH takich samych błędów (wyrazów) wyświetlała komunikat i kolorowała te linijki.
3. Po przekroczeniu TRZECH kolorowanie tym samym kolorem, zerowanie licznika powtórzeń i zliczanie na nowo (bez spamowania komunikatami po przekroczeniu trzech takich samych pozycji).
4. Sortowanie wg. kolorów mile widziane.
5. Każde 3 takie same błędy pokolorować tym samym kolorem (ale bez powtórzeń) - czyli...

Trzy takie same pozycje <b>A</b> i więcej - pokolorować na niebiesko. Kolejne 3 takie same <b>B</b> i więcej - pokolorować na czerwono itd. 

Szukałem całe forum, google bezradne, a ja sam nie mogę wymyślić czegoś sensownego. 
Jeśli ktoś byłby w stanie udzielić konkretnej odpowiedzi - byłbym dozgonnie wdzięczny ;)

Pozdrawiam