Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
1

Цикл не работает

10.03.2015, 23:42. Показов 2445. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Несколько месяцев не включал делфи и понял что хорошенько отупел за это время поэтому заранее извиняюсь за тупость...

Вобщем есть код:
Код
var
  i:integer;
  RegExp:TRegExpr;
begin
  i:=0;
  RegExp:=TRegExpr.Create;
  RegExp.Expression:='[(.*?)]';
  //отправляется запрос

    if RegExp.Exec('запрос_переменная') then
    begin

      repeat
      // парсится 50 значений
      until not RegExp.ExecNext;

    end;

  RegExp.Free;
end;
в SpinEdit указывается количество данных (например 150) которое нужно спарсить, как правильно сделать цикл (while i<sSpinEdit1.Value do begin и потом в конце inc(i) , отупел изрядно, забыл даже элементарное) чтобы 3 раза обновило запрос (страницу) и спарсило 150 значений? Т.е запрос с которого парсятся данные должен 3 раза обновится (т.к на странице отображается 50 значений). Спасибо


Пробовал делать вот так:
Код
var
  i:integer;
  RegExp:TRegExpr;
begin
  i:=0;
  RegExp:=TRegExpr.Create;
  RegExp.Expression:='[(.*?)]';
  while i<sSpinEdit1.Value do
  begin
  //отправляется запрос

    if RegExp.Exec('запрос_переменная') then
    begin

      repeat
      // парсится 50 значений
      inc(i);
      until not RegExp.ExecNext;
    end;
  end;
  RegExp.Free;
end;
но не работало (что странно), хотя да, ничего странного, цикл не в том месте...

Добавлено через 9 часов 21 минуту
up..............
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2015, 23:42
Ответы с готовыми решениями:

Цикл: как работает цикл в цикле
Не могу понять как работает цикл в цикле например: repeat begin lalalala if что-то1&lt;&gt;100 then...

Цикл не работает
В процедуре есть цикл, при выполнении этой процедуры, значения переменной цикла выходит за заданные...

Не работает цикл
Что не так с этим циклом? Надо что бы введенный в эдит номер маршрута отображался в мемо с...

Не работает цикл
Добрый день. Подскажите пожалуйста что я не так делаю. Вот код var p1, p2,o: Integer; ...

37
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 21:20  [ТС] 21
Author24 — интернет-сервис помощи студентам
Просто не могу понять, почему запрос не повторяется
Вы не пробовали делать что я говорил, даже обычными сообщениями узнать сколько раз повторяется цикл?

тут про запрос еще рано говорить, мне сначала надо чтобы софт парсил указанное количество а не все данные...
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 21:21 22
А сколько парсится значений?
0
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 21:24  [ТС] 23
А сколько парсится значений?
все (порядка 40-50шт) а нужно например 5, а уже тогда про запрос поговорим
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 21:26 24
5 значений всего?
0
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 21:30  [ТС] 25
5 значений всего?
вообще это указывается в спинэдит, число меняется...
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 21:32 26
Я понимаю, но речь же вроде шла про 150, а не 5 значений. Что-то не догоняю)))
0
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 21:35  [ТС] 27
Я понимаю, но речь же вроде шла про 150, а не 5 значений. Что-то не догоняю)))
на странице 50 зачений допустим, чтобы спарсило 150 - нужно отправить 3 раза запрос, логично? логично, а если нужно спарсить 5 при допустимых 50 значениях то запрос достаточно отправить 1 раз (я же говорил что про цикл для запроса, чтобы он повторялся, говорить еще рано)
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 21:40 28
Если только 5 то доп проверку сделать в цикле репит, не равно ли оно spinedit.value
0
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 21:47  [ТС] 29
Если только 5 то доп проверку сделать в цикле репит, не равно ли оно spinedit.value
пример пожалуйста
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 21:52 30
Лучший ответ Сообщение было отмечено HA3AP93 как решение

Решение

чтото типо этого
Delphi
1
2
3
4
5
6
7
8
if RegExp.Exec('запрос_переменная') then
    begin
 
      repeat
      // парсится 50 значений
      inc(i);
      until (not RegExp.ExecNext) or (i = sSpinEdit1.Value);
    end;
1
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 21:58  [ТС] 31
pavel_pushok,

Код
until (not RegExp.ExecNext) or (i = sSpinEdit1.Value);
работает, но разве нет другого способа с таким же кодом? просто я циклы использовал большое количество раз но в таком виде еще ни разу... теперь давай перейдем к запросу, достаточно ли будет while True do begin чтобы он постоянно обновлялся?
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 22:01 32
С таким он будет бесконечен, нужен ещё и будет выход из цикла.
0
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 22:06  [ТС] 33
С таким он будет бесконечен, нужен ещё и будет выход из цикла.
ну да) но нужно до тех пор пока счетчик не будет равен sSpinEdit, другие предложения?
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 22:13 34
Лучший ответ Сообщение было отмечено HA3AP93 как решение

Решение

Оставить как есть) чем не устраивает, просто с доп проверкой в репит
1
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 22:14  [ТС] 35
Оставить как есть) чем не устраивает, просто с доп проверкой в репит
пример проверки?
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 22:19 36
вот)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
while i<sSpinEdit1.Value do
  begin
  //отправляется запрос
 
    if RegExp.Exec('запрос_переменная') then
    begin
 
      repeat
      // парсится 50 значений
      inc(i);
      until (not RegExp.ExecNext) or (i = sSpinEdit1.Value);
    end;
  end;
0
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 146
13.03.2015, 22:29  [ТС] 37
вот)
ааа, ты об этом, я почему-то цикл после запроса ставил но вообще ведь я в начале поста правильно написал, нужно было просто проверку сделать i=sSpinEdit1.Value и все...

Добавлено через 3 минуты
pavel_pushok, слава баранам!!! заработало!!! спасибо тебе большое, очень помог!!!
0
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 22:30 38
Лучший ответ Сообщение было отмечено HA3AP93 как решение

Решение

нет за что) на то и форумы чтобы помогать)
2
13.03.2015, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2015, 22:30
Помогаю со студенческими работами здесь

Неправильно работает цикл
Эта программка должна брать по символу/числу из Edit1 отнимать 200 *200-66(B)=134*и затем...

Неправильно работает цикл FOR ?!
В представленном ниже коде цикл FOR - НЕ останавливается при достижении значения - 1, тем самым...

Не работает цикл в потоке
Вот писал программу,в ней цикл,достаточно длинный поэтому форма зависала,если просто процедуру в...

Почему это не работает (цикл while) ?
Вот кусок кода. Это часть конструкции Case of. При выборе одного из условий Комбобокса должно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru