зделал проще...
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
text: string;
i2:integer;
begin
text:=edit1.Text;
i2:= Length(text) ;
if i2=i then
timer1.Interval:=0 ;
i:=i+1;
if text[i]='d' then
edit2.Text:=edit2.Text+'8'
else
edit2.Text:=edit2.Text+'4';
end;
хотя так и не понял почему зацикливается