Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.12.2013, 15:01   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Изменение диапазона FOR

Собственно такая проблема:
Есть переменная i:integer;, которая имеет значение к примеру:12323.
Все 1 мы должны заменить на 33, пробовал сделать так:
Код:
var
i,i2,i3:integer;
str:string;

begin
i:=12323;


i2:=length(IntToStr(i));  
str:=IntToStr(i);     

for i3:=1 to i2 do begin
  if str[i3]='1' then begin
    delete(str,i3,1);
    insert('33',str,i3);
    i2:=i2+1;
    continue;
  end else
такой код работает, но не так как нужно, а именно:
если в переменную присвоить следующее:
i:=123231; то - первая единица поменяется на 33 а вторая вот уже нет. Так как у нас длинна строки остаётся старая. Собственно вопрос, как проверять всю строку а не с таким дефектом?
Winexcel вне форума
Старый 15.12.2013, 16:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Все 1 мы должны заменить на 33
Код:
i:=12323;
i:=IntToStr(StringReplace(StrToInt(i),'1','33',[rfreplaceall]));
И никаких циклов не надо. Тем более таких.
I'm learning to live...
Stilet вне форума
Старый 15.12.2013, 17:07   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

1. вар цикл типа while всегда сравниваем с актуальной длиной
Код:
i:=1;
while i<=length|(s) do
begin
  i:=i+1;
end;
2 вар проход от конца строки к началу
Изменения вносятся в просмотренную часть и никак не влияют на оставшуюся часть работы.
Код:
for i:=length(s) downto 1 do
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 15.12.2013, 18:11   #4
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
i:=12323;
i:=IntToStr(StringReplace(StrToInt(i),'1','33',[rfreplaceall]));
И никаких циклов не надо. Тем более таких.
спасибо, помогло.
Winexcel вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение диапазона по значениям внутри stolzdorfd Microsoft Office Excel 4 09.04.2013 16:36
автоматическое изменение диапазона в формуле Kek Microsoft Office Excel 3 11.12.2011 14:23
Изменение диапазона сохраняемых ячеек Asblue Microsoft Office Excel 2 28.10.2011 22:55
автоопределения диапазона Cone Microsoft Office Excel 12 25.12.2010 10:20
Узнавание диапазона Drean Microsoft Office Excel 7 26.10.2010 07:57