Ich denke mal, der Fehler ist durch deine schlampige Einrückung entstanden.
Hier dein Code nach Borland Style Guide formatiert:
Delphi-Quellcode:
procedure TForm1.Prim_re(n,i:integer);
begin
if n < limit then
begin
if i <= 1 then
List2.Items.Add(IntToStr(n))
else if (n mod i) <> 0 then
Prim_re(n,i-1);
end; // <== dieses end kommt zu früh
Prim_re(n+1,n); // <<== diese Zeile muss VOR das end
end;