Si entendí bien tu problema, te sucede que en algunos caso vas a obtener un
monton de mensajes 'no es primo', 'es primo'. Quedando en el edit 2 al final solo
el resultado obtenido al dividir un número justo por su anterior. O sea que nunca sera primo,
fijate lo que pasa si introduces un 2 o el 1 en el edit1 en tu algoritmo.
Lo normal en estos casos sería tener una variable booleana que comenzara a true y se
pusiera a false en el momento de encontrar un caso que elimine la posibilidad de
que sea primo, rompiendo el bucle en ese momento.
Un sencillo ejemplo modificando tu código sería asi
Código Delphi
[-]
var a,i:integer;
bEsPrimo: boolean;
begin
bEsPrimo := True;
a:=strtoint(edit1.Text);
for i:=2 to a-1 do
if a mod i =0 then
begin
bEsPrimo := False;
break;
end;
if bEsPrimo
edit2.text:='es primo'
else
edit2.text:='no es primo';
end;
Otra posiblidad podría ser esta:
Código Delphi
[-]
var a,i:integer;
resultado: string;
begin
resultado := 'no es primo';
a:=strtoint(edit1.Text);
for i:=2 to a-1 do if a mod i =0 then
begin
resultado := 'es primo';
break;
end;
edit2.text:= resultado;
end;