Нужно сделать прогу, которая удаляет из входной строки YS элемент,находящийся перед последовательностью символов, заданных переменной SX(для всех вхождений SX).
Я написал так:
Код
Var
Kz,Np,J,DSX: Integer;
YS,SX,UYS,KY: String;
begin
SX:=Edit1.Text;
YS:=Edit2.Text;
UYS:=Edit2.Text;
DSX:=Length(SX);
Np:=Pos(SX,YS);
Kz:=0;
UYS:=YS;
J:=Np;
While Np<>0 Do Begin
Delete(YS,J-1,1);
Delete(UYS,Np-1,DSX+1);
Np:=Pos(SX,UYS);
J:=Np+DSX;
Kz:=Kz+1;
end;
Edit3.Text:=YS;
Str(Kz,Ky);
Edit4.Text:=KY;
end;
end.
Kz,Np,J,DSX: Integer;
YS,SX,UYS,KY: String;
begin
SX:=Edit1.Text;
YS:=Edit2.Text;
UYS:=Edit2.Text;
DSX:=Length(SX);
Np:=Pos(SX,YS);
Kz:=0;
UYS:=YS;
J:=Np;
While Np<>0 Do Begin
Delete(YS,J-1,1);
Delete(UYS,Np-1,DSX+1);
Np:=Pos(SX,UYS);
J:=Np+DSX;
Kz:=Kz+1;
end;
Edit3.Text:=YS;
Str(Kz,Ky);
Edit4.Text:=KY;
end;
end.
где Np-позиция SX в YS; UYS-вспомогательная строка; J-вспомогательная переменная,отвечающая за
нахождение всех последующих SX в строке YS. Программа правельно удаляет только два заданных символа,а потом начинать действовать неверно.Мне кажется,что проблема в строке J:=Np+DSX.
Помогите пожалуста исправить программу.
Спасибо.