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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2009, 00:47   #31
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

В общем зделал так
Код:
procedure TForm1.Button1Click(Sender: TObject);

begin

 Timer1.Enabled:=true;
 end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 i: integer;
 SL: TStringList;
 str: string;
 pos_: integer;
 Server, Port: string;
begin
 SL:=TStringList.Create;

 SL.LoadFromFile('Proxy.txt');

   if sl.Text=''
 then begin
  ShowMessage ('Список пуст');
 Timer1.Enabled:=false;
 exit;
 end;

 for i:=0 to SL.Count-1 do

 begin
  str:=SL[i];
  pos_:=pos(':', str);
  Server:=copy(str, 1,  pos_-1);
  Port:=copy(str, pos_+1, length(str) - pos_);
  SL.Delete(0);
  SL.SaveToFile('Proxy.txt');
  try
IdHttp1.ProxyParams.ProxyServer:=(Server);
IdHttp1.ProxyParams.ProxyPort:=StrToInt(Port);

 IdHttp1.ReadTimeout:=10000;
 idhttp1.get('http://getmyip.ru/');
except
  SL.Delete(0);
 SL.SaveToFile('Proxy.txt');
   SL.Free;
    end;
    end;
     end;

  end.
Теперь проверяются поочерёдно все прокси из списка, не вылазают ошибки связанные с сетью, зато теперь когда программа заканчивает проверку прокси, и появляется ShowMessage ('Список пуст'); и выскакивают ошибки

List index out of bounds (2)
List index out of bounds (0)
List index out of bounds (4)
Access violation at address 00000000. Read of address 00000000.
Access violation at address 20544547

Вроде связаны они со списком
Что они означают? как их можно исправи.
Terikon вне форума Ответить с цитированием
Старый 06.05.2009, 08:07   #32
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

допустим у тя в файле три строки 0,1,2
по твоему циклу фор ты идешь так грузим строку 0,удаляем её(остаются 0,1)при втором проходе берешь строку 1 но удаляешь опять строку 0(остается только 0) и при третьем проходе ты пытаешься обратится к строке 2 которой уже давно нет

это связанно с str:=SL[i];

замени на str:=SL[0]; тогда


а зачем ты это делаешь?
Код:
except
  SL.Delete(0);
 SL.SaveToFile('Proxy.txt');
   SL.Free;
    end;
особенно SL.Free; ?
вот тебе ошибку доступа и выдает
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 06.05.2009 в 08:12.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.05.2009, 15:09   #33
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Всем спасибо всё работает)
во время работы прога заметно зависает, выставил Application.ProcessMessages;
Может есть ещё какие нибуть способы
И ещё, сообщение 'Файл пуст' иногда выскакивает несколько раз подряд.

Последний раз редактировалось Terikon; 06.05.2009 в 15:16.
Terikon вне форума Ответить с цитированием
Старый 06.05.2009, 15:11   #34
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Да, брось на форму IdAntifreez с вкладки indy misc
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.05.2009, 17:53   #35
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

За IdAntifreez спасибо, а как быть с этим 'Файл пуст' иногда выскакивает несколько раз подряд.
Terikon вне форума Ответить с цитированием
Старый 06.05.2009, 18:37   #36
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Всё разобрался
Код:
if sl.Text=''
 then begin
  ShowMessage ('Файл пуст');
  Timer1.Enabled:=false;
tr.Free;
sl.Free;
idhttp1.Free;
 exit;
 end;
Terikon вне форума Ответить с цитированием
Старый 06.05.2009, 19:05   #37
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
idhttp1.Free;
этого не стоит так как у вас компонент не динамически создается, я полагаю...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 06.05.2009 в 19:08.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.05.2009, 21:28   #38
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Как на индях принудительно разорвать соединение, например жму на копку STOP
//idhttp1.разорвать соединение//
tr.Free;
sl.Free;
Terikon вне форума Ответить с цитированием
Старый 06.05.2009, 21:47   #39
crystalbit
ГОСТ 2.403-75
Пользователь
 
Аватар для crystalbit
 
Регистрация: 04.05.2009
Сообщений: 92
По умолчанию

вроде disconnect
мой скромный delphi блог
crystalbit вне форума Ответить с цитированием
Старый 06.05.2009, 22:20   #40
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Что означает эта ошибка Access violation at address 00000000. Read of address 00000000. При нажатии на кнопку программа останавливается, но надаедает эта ошибка.

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
IdHttp1.Disconnect;
sl.Free;
exit;

end;
Terikon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чекер DeDoK Общие вопросы Delphi 0 15.04.2009 22:26
Прокси FROSTMORN Безопасность, Шифрование 2 20.11.2008 15:17
Прокси в IdHTTP AVer Работа с сетью в Delphi 0 10.10.2008 20:30
Прокси russian-stalker Общие вопросы Delphi 1 07.09.2008 19:36
Прокси Simply-Art Свободное общение 4 19.05.2007 13:25