>>29
実行時に仕様通り動かない場合、ステップ実行すれば原因はおのずとわかる。
ブレークポイントをかけるなりして、不具合個所を見つけ出す癖をつけましょう。

考えられる原因
一.文字列と文字の混同( TStrings の解説を読みましょう)。
  その条件の場合、subitems.strings[0] と Edit2.text の
  "文字列"が一致した場合のみ、ヒットするようです。
if ListView1.Items.Item[i].SubItems.Strings[0] = Edit2.Text then
の代りに、
if Pos(Edit2.Text,ListView1.Items.Item[i].SubItems.Strings[0]) = 1 then
でも置けば、当座の用はしのげるかと。
1文字目であったのが幸いし、2 Byte も 1 Byte も関係無いようですので。