Code:
if Memo4.Lines.Strings[i][p] <> '</a>' then
Wenn ich das richtig sehe, vergleichst du ein Char mit einem String.
Der Char an Stelle p des Strings kann ja nie '</a>' sein, weil das schon 4 Chars sind. Also läuft die Schleife immer bis zum Ende des Strings und liest weiter die Zeichen ein.