Опа, оказывается-то ТЗ поменялось, нужно уже ашипки чтоб исправляло, тогда ещё вариант, только едит на форму киньте - в нём будет слово для "издевательств"
Код:
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
procedure Pechataem(s:string);
function Stiraem(sim:integer): boolean;
{ Public declarations }
end;
var
Form1: TForm1;
n,i: integer;
str: string;
slovo,dovesok: string;
flg,flt: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
fb: boolean;
begin
fb:=false;
Slovo:='';
Dovesok:='';
// пример ввода в едит, после | идёт вариант исправления
// Edit1.Text:= 'Veretino|eno';
for i:=1 to Length(Edit1.Text) do
begin
if Edit1.Text[i] = '|' then fb:= true;
if fb then
begin
if Edit1.Text[i] <> '|' then Dovesok:= Dovesok + Edit1.Text[i];
end else Slovo:= Slovo + Edit1.Text[i];
end;
Memo1.Clear;
n:= 0;
Timer1.Enabled:= true;
flg:= true;
flt:= false;
end;
procedure TForm1.Pechataem(s: string);
begin
Inc(n);
if n<=length(s) then
begin
Memo1.Text:=Memo1.Text + s[n];
Timer1.Interval:=100 + Random(100);
end
else
begin
n:=0;
flg:=false;
if flt then Timer1.Enabled:= false;
end;
end;
function TForm1.Stiraem(sim: integer): boolean;
begin
Result:= false;
if i<=sim then
begin
str:=Memo1.Text;
Delete(str,length(str),i);
Timer1.Interval:=100 + Random(50);
Memo1.Text:=str;
Inc(i);
end
else
begin
Result:= true;
i:=0;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if flg then Pechataem(Slovo) else
if Stiraem(Length(Dovesok))then
begin
flg:= true;
Slovo:= Dovesok;
flt:= true;
end;
end;