Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Цикл for с шагом более 1 или while с 2я условиями. (Такая трабла.)
Цикл for с шагом более 1 или while с 2я условиями.
DublДата: Среда, 20.10.2010, 23:50 | Сообщение # 1
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
В общем так, практикуюсь в Делфи, решил попрактиковаться с циклами и одновременно с сетью))

Пишу парсер который на сайте filmix.net собирает значение годов в каком-то там меню, не важно это, я рандомно выбрал, чтобы просто попрактиковаться.

Суть: нужен такой цикл, который:

k:=M // какое-то число отличное от 0 типа integer например.
for k := M to B do
begin
memo1.Line.add('тут, короче, какое-то спарсенное значение', <А тут обязательно k, k это кол-во символов после которых нужно парсить, там отдельная функция, не важно>);
k:=k+32 // именно так нужно, но так нельзя судя по всему.
end;

так не выходит, в итоге прога выдает по 32не помню точно одинаковых строк с одним значением, далее столько же строк с другим значением и так далее, короче не работает шаг.

Пробовал через while, тоже не вышло, не знаю как 2 условия запихнуть, чтобы и меньше 1 и больше 2, ну вот как-то так. Кто поможет?

 
skycarДата: Четверг, 21.10.2010, 00:45 | Сообщение # 2
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Ну дык... Тебе нужен цикл с шагом 32 ед.?

Code

var N: Cardinal; // Cardinal - целочис. тип 0..2^32 - 1
...
N:=0;
while not (N = 256) do
  begin
   Memo1.Lines.Add('строка ' + IntToStr(N));
  Inc(N, 32);
  end;

Циклы с шагом, к-рый не является единицей, могут быть лишь неопределёнными (while/repeat), for - шаг всегда единица. Надо внимательно следить за выполняющимся условием выхода из цикла. Правильно я понял твою проблему?

 
DublДата: Четверг, 21.10.2010, 00:57 | Сообщение # 3
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
У мне нужно выполнять цикл, когда k строго от M и до N с шагом 32
 
skycarДата: Четверг, 21.10.2010, 01:10 | Сообщение # 4
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
А, тогда мона и обойтись for'ом

Code

procedure AnAction;
var I, M, N: LongInt;
  Step: Cardinal;
begin
  Step:=32;
  M:=Form1.SpinEdit1.Value; // к примеру
  N:=Form1.SpinEdit2.Value;
  for I:=M to N do
  begin
   Form1.Memo1.Lines.Add('string ' + IntToStr(Step));
  Inc(Step, 32); // Step:=Step + 32;
  end;
end;

В данном случае на 32 возрастает переменная Step на каждой интерации (выполнении) цикла

 
DublДата: Четверг, 21.10.2010, 03:05 | Сообщение # 5
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
щас попробую.

Добавлено (21.10.2010, 01:36)
---------------------------------------------
Не выходит что-то)))

Добавлено (21.10.2010, 02:05)
---------------------------------------------
Так, по идее должно работать но что-то не так, ладно, видимо я напортачил в другом месте где-то)) Разберусть.

Мб в другую тему нужно, но пожалуй задам тут вопрос. А как например спарсить все ссылки на сайте, у которых нет периодичности, они рандомно в исходном коде страницы стоят.

Добавлено (21.10.2010, 03:05)
---------------------------------------------

Code
var N: Cardinal; // Cardinal - целочис. тип 0..2^32 - 1  
...  
N:=0;  
while not (N = 256) do  
   begin  
    Memo1.Lines.Add('строка ' + IntToStr(N));  
   Inc(N, 32);  
   end;

Вот так сделал, примерно, ну чуть иначе, не важно)) помогло вот это)) Спасибо.
А вот про ссылки вопрос актуален))

 
skycarДата: Четверг, 21.10.2010, 12:05 | Сообщение # 6
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Ну вот же здесь есть статья /publ/29-1-0-202, а в ней ещё один линк есть.
 
DublДата: Четверг, 21.10.2010, 17:50 | Сообщение # 7
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
Прошу прощения, я в этот раз забыл в статьи глянуть)))
 
Форум » Все о Delphi » Начинающим » Цикл for с шагом более 1 или while с 2я условиями. (Такая трабла.)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz