Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > delete


Автор: Негодяй 15.4.2005, 13:41
думал разомнуться и человеку помочь, а тут:
Код

var s:string;
sogl:set of char;
i,j:integer;
begin
sogl:=['b','c','d','f','g','h'];
s:='abc de  fgh';
j:=0;

for i:=1 to length(s) do
if s[i] in sogl then
begin
delete(s,i,1);
inc(j);
end;
caption:=caption+s+' '+inttostr(j);
end;


выводит ac e g

а если вместо delete(s,i,1) сделать s[i]:='0' то так работает, а мне надо имено удалять/
чё за?? подскажите? smile

Автор: Snowy 15.4.2005, 13:44
Зделай цикл в обратную сторону - от конца к началу
Добавлено @ 13:46
Фикус в том, что ты удаляешь и у тебя строка сдвигается влево, а цикл уже ужел вперед.
При пробеге наоборот - это не мешает.

Автор: Негодяй 15.4.2005, 13:47
Код

var s:string;
sogl:set of char;
i,j:integer;
begin
sogl:=['b','c','d','f','g','h'];
s:='abc de  fgh';
j:=0;

for i:=length(s) downto 1 do
if s[i] in sogl then
begin
delete(s,i,1);
inc(j);
end;
caption:=caption+s+' '+inttostr(j);
end;
end.

заработало..smile спасибо.. и за объяснение!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)