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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2015, 22:13   #1
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
Злость Цикл for обезумел и восстал!

Всем привет))

Вполне обычный цикл, начинает не с 0, а с предела, знаю, что это какая-то оптимизация, но мне нужно именно с 0.

Как отключить сие недоразумение?
ДралсяСошибками вне форума Ответить с цитированием
Старый 21.07.2015, 22:20   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Покажите свой цикл
Shouldercannon вне форума Ответить с цитированием
Старый 21.07.2015, 22:33   #3
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Код:
type
  ImagesX = packed record
    Code: String;
    Image: String;
  end;

const
  Images: Array[0..99] of ImagesX = ((Code: '0'; Image: '0.gif'),....

procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer;
begin
  for i := Low(Images) to High(Images) do
    begin
      Memo1.Text := StringReplace(Memo1.Text, Images[i].Code, Images[i].Image, [rfReplaceAll, rfIgnoreCase]);
    end;
end;
ну как-то так))
ДралсяСошибками вне форума Ответить с цитированием
Старый 22.07.2015, 06:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй {$o-} приписать перед циклом. и {$o+} после.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2015, 14:17   #5
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Пробовал, без изменений, но странность в том, что цикл работает как надо)))
ДралсяСошибками вне форума Ответить с цитированием
Старый 22.07.2015, 14:28   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Цикл for обезумел и восстал!
Тапком его!
Тогда явно получай длину массива и ручками в цикле от 0 до count.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.07.2015, 14:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это оптимизация, в результате переменные вы видите криво, но внутри все компенсируется.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.07.2015, 14:40   #8
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Любопытно. Но не могу повторить. Какая IDE? Вы уверены что у вас перепутано? Как проверяли?
Код:
Procedure TForm1.Button3Click(Sender: TObject);
Var i: Integer; S: String;
Begin
S:='';
For i:=Low(Images) To High(Images) Do
      Begin
      S:=S+'|'+IntToStr(i);
      Memo1.Text := StringReplace(Memo1.Text, Images[i].Code, Images[i].Image, [rfReplaceAll, rfIgnoreCase]);
      End;
S:=S+'|';
ShowMessage(S);
End;
ResourceSpace вне форума Ответить с цитированием
Старый 22.07.2015, 15:17   #9
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

попробуй такой костыль
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  i,jKostyl: Integer;
begin
  for i := Low(Images) to High(Images) do
    begin
      jKostyl := i;
      Memo1.Text := StringReplace(Memo1.Text, Images[i].Code, Images[i].Image, [rfReplaceAll, rfIgnoreCase]);
    end;
end;
ResourceSpace
мешает эта строка
Код:
S:=S+'|'+IntToStr(i);
если смотреть в дебаге значение переменной i то она ведет отсчет с 100 к нулю, а если добавить использование переменной i, то отсчет нормалиизуется


для массива Array[6..9]
выдает значения i от 4 к 1
Пишу на Delphi за еду

Последний раз редактировалось Toxa; 22.07.2015 в 15:53.
Toxa вне форума Ответить с цитированием
Старый 22.07.2015, 16:07   #10
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Суть сей пляски заменить коды смайлов цифрами, есть список:
Код:
:) 1
0:) 2
Пусть текст:
Код:
:),0:)
При замене, получится:
Код:
1,01
Если список отсортировать по убыванию, то получится 1,2
Мой список отсортирован по убыванию, но когда я смотрю значения переменных в цикле, то он начинает с наименьших, но при этом отрабатывает правильно, видимо, как написали выше, это какая-то иллюзия)))

Delphi7
ДралсяСошибками вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить цикл (for) чтобы цикл работал пока RegExp.Match не будет пустым? FleXik Общие вопросы Delphi 11 05.03.2014 14:49
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34