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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 00:02   #1
NiKiToZZ-
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 28
По умолчанию Не выполняется участок кода

Код:
for i:=0 to proxylist.Lines.Count-1 do
begin
a:=proxylist.Lines[i];
end;
usedproxies.Lines.add(a);
proxylist.Lines.Delete(i);
не выполняется proxylist.Lines.Delete(i);
Если внести под цикл - сносит половину proxylist.
NiKiToZZ- вне форума Ответить с цитированием
Старый 25.02.2012, 00:06   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а что вы хотите сделать этой строкой?

я думаю у вас должно быть в цикле все:
взяли прокси, проверили/использовали пошли дальше(и не надо ничего стирать)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.02.2012, 00:11   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

а можно узнать смысл вашего действия?
Человек_Борща вне форума Ответить с цитированием
Старый 25.02.2012, 00:13   #4
NiKiToZZ-
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а что вы хотите сделать этой строкой?

я думаю у вас должно быть в цикле все:
взяли прокси, проверили/использовали пошли дальше(и не надо ничего стирать)
просто мне будет немного удобнее и приятнее работать с программой, если она загрузит прокси в twebbrowser и занесет его в usedproxies а из proxylist удалит. да и повторений в использовании таким образом можно избежать.
P.S да и к тому же при том условии, что написано у меня, все время в браузер будет добавляться последний адрес из списка, а остальные задействованы не будут.

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
а можно узнать смысл вашего действия?
подгрузка адреса в браузер, удаление из рабочего списка, добавление в отработанный.

Последний раз редактировалось Stilet; 25.02.2012 в 12:28.
NiKiToZZ- вне форума Ответить с цитированием
Старый 25.02.2012, 00:15   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Пепел Феникса, +1

добавлю.

1)
Цитата:
не выполняется proxylist.Lines.Delete(i);
ну и чему будет равен i ПОСЛЕ окончания цикла?! правильный ответ - неизвестно чему - т.к. запрещено использовать переменные цикла ВНЕ самого цикла - они могут иметь неожиданное значение

2) если в цикле происходит удаление элементов, которое приводит к изменению количества элементов, то прямой цикл категорически не рекомендуется использовать.
нужно использовать или цикл FOR i:=ИндексПоследнегоЭлемента downto ИндексПервогоЭлемента do .... <удаление внутри цикла>

либо пользоваться циклами while / repeat.. until.

примерно так:
Код:

for i:=proxylist.Lines.Count-1 downto 0 do begin
   usedproxies.Lines.add( proxylist.Lines[i] );
   proxylist.Lines.Delete(i);
end;

Последний раз редактировалось Serge_Bliznykov; 25.02.2012 в 00:18.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.02.2012, 00:19   #6
NiKiToZZ-
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 28
По умолчанию

Эмм... решение нашел сам, изменением кода до:
Код:
for i:=0 to proxylist.Lines.Count-1 do
  begin
  a:=proxylist.Lines[i];
  usedproxies.Lines.add(a);
  proxylist.Lines.Delete(i);
  exit;
  end;
На идею навел Serge_Bliznykov, спасибо.
NiKiToZZ- вне форума Ответить с цитированием
Старый 25.02.2012, 00:20   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

далее, цикл(for,while,repeat) и TWebBrowser вещи не совместимые.
он то загружает не сразу как написали Navigate.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.02.2012, 00:23   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

NiKiToZZ, ваш код выполнится только один раз, для i=0 и выйдет...


посмотрите, я в своё сообщение выше выложил пример кода, который обработает (и, соответственно, удалит) все строчки в proxylist!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.02.2012, 00:24   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас стоит exit, вот скажите, и зачем там цикл ввобще?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.02.2012, 00:27   #10
NiKiToZZ-
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
у вас стоит exit, вот скажите, и зачем там цикл ввобще?
Честно сказать - не знаю сам. Меня устраивает то что программа работает так, как нужно.
NiKiToZZ- вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
участок кода с оператором for tema1234321 Помощь студентам 3 27.12.2011 00:41
участок кода с оператором for tema1234321 Помощь студентам 3 27.12.2011 00:14