Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
#1

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

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

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

Вобщем есть код:
Код
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2015, 23:42
Ответы с готовыми решениями:

Цикл: как работает цикл в цикле
Не могу понять как работает цикл в цикле например: repeat begin lalalala...

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

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

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

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

37
Fakeoke
314 / 314 / 201
Регистрация: 28.07.2011
Сообщений: 1,849
11.03.2015, 12:49 #2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
for i:=1 to SpinEdit1.Value do
begin
  // тут что-то делается столько раз, сколько указано в SpinEdit1
end;
 
либо
 
i:=0;
while (i<SpinEdit1.Value) do
begin
//тут что-то делается SpinEdit1.Value раз
i:=i+1;
end;

чтобы 3 раза обновило запрос (страницу) и спарсило 150 значений?
делаете первый запрос
парсите циклом 50 значений
делаете второй запрос
парсите еще 50 значений циклом..
итд итп
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
12.03.2015, 05:14  [ТС] #3
Fakeoke, как-бы не так

Код
i:=0;
while (i<SpinEdit1.Value) do
begin
//тут что-то делается SpinEdit1.Value раз  - если тут будет запрос то если я в SpinEdit введу 50 - отправится 50 запросов и с каждого запроса спарсится по 50 значений а это уже 2500 а мне нужно только 50 значений
i:=i+1;
end;
Добавлено через 14 часов 36 минут
up.................... проблема еще актуальна

Добавлено через 21 минуту
мне нужно чтобы запрос отправлялся заново только если i<sSpinEdit1.Value - причем в sSpinEdit указывается не количество раз которое должен отправиться запрос а количество значений которое надо спарсить, спасибо.
0
БогДелфей
422 / 330 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
12.03.2015, 05:46 #4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
for i := 0 to 2 do
    begin
      q := 0;
      //îòïðГ*âëÿåòñÿ Г§Г*ïðîñ
        repeat
          if RegExp.Exec('Г§Г*ïðîñ_ïåðåìåГ*Г*Г*Гї') then
            begin
              RegExp.Match[0];
              Inc(q);
            end;
        until (not RegExp.ExecNext) or (q = sSpinEdit1.Value);
     end;
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 08:11  [ТС] #5
хорошо, а если for i := 0 to 2 dо неизвестно сколько раз? например на 1 странице 30-50 значений??

Добавлено через 10 часов 48 минут
uppppppppppppp

Добавлено через 51 минуту
нужно парсить все значения которые возможно спарсить по заданному шаблону регулярки -> увеличивать счетчик типа integer и снова отправлять запрос пока этот счетчик не будет равен sSpinEdit1.Value
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 12:21 #6
Так а в чем проблема, закончились совпадения переходи дальше - на след страницу
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 12:31  [ТС] #7
pavel_pushok, пример?
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 12:41 #8
Каким образом именно ваш цикл не работал? Значения вообще парсятся хоть какие то?
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 12:44  [ТС] #9
Каким образом именно ваш цикл не работал? Значения вообще парсятся хоть какие то?
ну да, значения парсятся но проблема не в парсинге а в цикле, выше описал проблема и когда закончились совпадения надо просто обновлять ту же страницу
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 12:54 #10
Делает только один запрос?
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 12:57  [ТС] #11
Делает только один запрос?
да но когда закончились совпадения этот запрос должен отправляться заново и опять с него должны парситься значения пока не будет i = Form1.sSpinEdit1.Value.
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 12:58 #12
А отлаживать не пробовали? Мало ли повторяется, а ошибка в другом
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 12:59  [ТС] #13
А отлаживать не пробовали? Мало ли повторяется, а ошибка в другом
не умею отлаживать
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 13:02 #14
Сделайте тогда по простому - при входе в цикл выводите какое нибудь сообщение. Так и проверить сколько раз повторяется цикл while
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 20:15  [ТС] #15
up................
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 20:52 #16
Ничего не вышло?
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 20:53  [ТС] #17
pavel_pushok, нет(((
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 20:56 #18
Всем кодом не поделитесь, попробовал бы помочь, так особо не понять в чем проблема. Вроде все связно написано.
0
HA3AP93
1 / 1 / 0
Регистрация: 27.12.2013
Сообщений: 137
13.03.2015, 21:06  [ТС] #19
pavel_pushok, уже и так как мог максимально подробно описал

есть запрос, есть sSpinEdit1 - указывается количество значений которое нужно парсить

отправляем запрос -> парсим все значения -> отправляем этот же запрос -> парсим все значения, и так до тех пор пока счетчик i не будет равен sSpinEdit1
0
pavel_pushok
30 / 30 / 9
Регистрация: 25.12.2014
Сообщений: 115
13.03.2015, 21:09 #20
Просто не могу понять, почему запрос не повторяется
Вы не пробовали делать что я говорил, даже обычными сообщениями узнать сколько раз повторяется цикл?
0
13.03.2015, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2015, 21:09

Неправильно работает цикл
Эта программка должна брать по символу/числу из Edit1 отнимать 200...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru