Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не работает цикл? 
:(
    Опции темы
SultanOFF
  Дата 18.11.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 23.3.2008

Репутация: нет
Всего: нет



Здравствуйте. Делаю цикл:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
ho: integer;
sv:string;
Reg2: TRegExpr;
begin
Reg2 := TRegExpr.Create;
 Reg2.Expression:= '-?\d+';
for ho := 0 to memo2.Lines.Count - 1 do
begin
if Reg2.Exec(memo2.Lines[ho]) then
begin
Reg2.ExecNext;
sv:= 'c:\marsel\'+reg2.Match[0]+'.zip';
DownloadFile(memo2.Lines[ho], sv);
Zip1.FileName:=sv;
Zip1.OpenArchive;
Zip1.DeleteFiles('*.html*', faAnyFile, '.rtf');
Zip1.Comment:='Marsel';
Zip1.CloseArchive;
Reg2.Expression:= '<title>(.*?)</title>.*?description" content="(.*?)">';
downloadurl(memo1.Lines[ho]);
if Reg2.Exec(memo3.Text) then
begin
showmessage(reg2.Match[1]);
showmessage(reg2.Match[2]);
end;
memo3.Clear;
end;

end;


но цикл выполняется только для первого файла, дальше не работает :( Отчего и почему? Да кстати если сделать просто вот так:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
ho: integer;
sv:string;
Reg2: TRegExpr;
begin
Reg2 := TRegExpr.Create;
 Reg2.Expression:= '-?\d+';
for ho := 0 to memo2.Lines.Count - 1 do
begin
if Reg2.Exec(memo2.Lines[ho]) then
begin
Reg2.ExecNext;
sv:= 'c:\marsel\'+reg2.Match[0]+'.zip';
DownloadFile(memo2.Lines[ho], sv);
Zip1.FileName:=sv;
Zip1.OpenArchive;
Zip1.DeleteFiles('*.html*', faAnyFile, '.rtf');
Zip1.Comment:='Marsel';
Zip1.CloseArchive;
end;
end;


то работает smile

Это сообщение отредактировал(а) SultanOFF - 18.11.2009, 16:31
PM MAIL   Вверх
former
Дата 18.11.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 4
Всего: 17



А в конце цикла end кто будет ставить?


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
THandle
Дата 18.11.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Цитата(SultanOFF @  18.11.2009,  15:56 Найти цитируемый пост)
Zip1.Comment:='BLABLABLA;


Строку то закрыть надо:

Код

Zip1.Comment:='BLABLABLA';


А то даже тут, на форуме видно что весь последующий код просто строка. В остальное не всматривался.
PM   Вверх
SultanOFF
Дата 18.11.2009, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 23.3.2008

Репутация: нет
Всего: нет



ой блин, это Я когда сюда переносил только забыл поставить, в оригинале строка закрыта smile поэтому ошибка думаю не в этом :(

Добавлено через 2 минуты и 58 секунд
Цитата

А в конце цикла end кто будет ставить? 


так ведь все end стоят вроде?
PM MAIL   Вверх
Демо
Дата 18.11.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



SultanOFF, 

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


--------------------
    
PM MAIL ICQ Skype   Вверх
SultanOFF
Дата 18.11.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 23.3.2008

Репутация: нет
Всего: нет



а как поставить эти самые брекпоинты? И как отслеживать вручную?
PM MAIL   Вверх
Демо
Дата 18.11.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



- Встаёшь на строку Reg2 := TRegExpr.Create;
- Нажимаешь F5
- После запуска программы (F9) и нажатьия на кнопку программа остановится на этой строке.
После этого пошагово (F8) начмнаешь выполнять программу, одновременно просматривая в окне отладчика значение нужных переменных.




--------------------
    
PM MAIL ICQ Skype   Вверх
SultanOFF
Дата 18.11.2009, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 23.3.2008

Репутация: нет
Всего: нет



спасибо цикл теперь работает smile Только возник вопрос немного в другом направлении:
выполняется этот цикл 
Код

begin
for i := 0 to memo2.Lines.Count - 1 do
begin
wb1.navigate(memo2.lines[i]);
 \\здесь код который выполнится при полной загрузке страницы
end;
end;

как сделать проверку на то что страница загрузилась полностью и выполнить определенный код со страницей?
PM MAIL   Вверх
Данкинг
Дата 18.11.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Отлавливай событие браузера OnDocumentComplete.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
SultanOFF
Дата 19.11.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 23.3.2008

Репутация: нет
Всего: нет



а можете привести пример? гуглил, но нашел пример как использовать только обычную проверку загрузки, в цикле ничего не нашел.  smile 
PM MAIL   Вверх
Демо
Дата 19.11.2009, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



Цитата(SultanOFF @  18.11.2009,  23:32 Найти цитируемый пост)
как сделать проверку на то что страница загрузилась полностью и выполнить определенный код со страницей?



Цитата(Данкинг @  18.11.2009,  23:43 Найти цитируемый пост)
Отлавливай событие браузера OnDocumentComplete.


При плоском выполнении кода есть другая возможность:

Код

  wb1.navigate(memo2.lines[i]);
  while wb1.Busy do Application.ProcessMesages;



--------------------
    
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 19.11.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А, нужно в цикле... Пока что пришло в голову только заведение глобальной булевой переменной (var a:boolean), которой перед началом загрузки присваивается false, а далее "вешаем" цикл с помощью while a=false do begin end. На OnDocumentComplete же вешаем "a:=true". Решение кривое, но пока что мне ничего более умного в голову не пришло. smile

Добавлено через 1 минуту и 12 секунд
Демо, а .Busy - это статус браузера именно от начала загрузки до её окончания?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Демо
Дата 19.11.2009, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



Цитата(Данкинг @  19.11.2009,  00:58 Найти цитируемый пост)
Демо, а .Busy - это статус браузера именно от начала загрузки до её окончания?


Ну да. Как раз до OnDocumentComplete


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1009 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.