Ich denke der Fehler liegt in den Subitems
du hast 5 Spalten. und die Werte dafür sind wie folgt verteilt:
Delphi-Quellcode:
1. Spalte ==> ListView.Items.Item[r].Caption
2. Spalte ==> ListView.Items.Item[r].SubItems.Strings[0]
3. Spalte ==> ListView.Items.Item[r].SubItems.Strings[1]
4. Spalte ==> ListView.Items.Item[r].SubItems.Strings[2]
5. Spalte ==> ListView.Items.Item[r].SubItems.Strings[3]
du hingegen gehst die SubItems.Strings[] von 0 bis 4 durch. und SubItems.String[4] existiert nicht, ausserdem lässt du dabei die erste Spalte weg.
Delphi-Quellcode:
// Spalte 1 durchsuchen
If (AnsiPos(LowerCase(SuchString),LowerCase(ListView.Items.Item[r].Caption)) <> 0) ...
// Spalten 2-5 durchsuchen
For c:=0 to ListView.Items.Item[r].SubItems-1 do
...
Wenn du deinen Sourcecode so änderst müsste es klappen