Davon abgesehen, dass das IF absolut zuverlässig funktioniert, ist es die falsche Herangehensweise bei diesem Problem - weil der Code ein unwartbares Monstrum wird. Das siehst Du ja jetzt schon.
Es ist ja gerade das Rätsel, dass ich ganz einfach deine These vom "zuverlässigen IF...THEN" widerlagen kann. Die Erklärung dafür würde mich schon (theoretisch) interessieren.
Jetzt werde ich mich mal auf TStringList konzentrieren (für 2000 Suchbegriffe).