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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 12:39   #1
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию Цикл. Не отправляются повторно запросы.

Создаю цикл от 1 до 2.
Идет первый: все проходит нормально, все коректно отправляется.
Второй: процедура запускается: данные не отправляются, только функция отправки работает(она на инди а не на синапсе) то есть часть кода работает получается остальное пропускается. С чем могут быть проблемы? Это может быть из-за того что переменные типа string я не уничтожаю? Хотя даже если они и не пустые отправка то должна работать...Вроде все как всегда делаю.

_______________________

Пока писал ответ понял))
Но все же обьясните почему так:
Цикл я уже описал. Если стоит выбор HTTP прокси у синапса то цикл себя ведет страно (соксов ни каких и нет, но выбор стоит) а если убрать HTTP на "не выбрано" то все нормально работает?
Зод вне форума Ответить с цитированием
Старый 12.02.2012, 17:04   #2
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

может из-за того, что сервер уже отправляет кукисы, а потом вы их не чистите на втором запросе?
sxcine вне форума Ответить с цитированием
Старый 12.02.2012, 20:15   #3
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

Я на синапсе. А там если не указал что нужно отправить он и не отправит. Вообщем точно не из-за этого.
Плюс еще интересную особенность нашел. Первый цикл нормально работает, второй описал, третий снова нормально. Прям четный не четный) Н укод проверенный я его часто в других программах использовал.
Буду искать в чем ошибся...где то в коде кажись не то
Зод вне форума Ответить с цитированием
Старый 12.02.2012, 20:18   #4
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

сделайте тогда процедуру отправки, а потом уже в цикле вызывайте её
sxcine вне форума Ответить с цитированием
Старый 17.02.2012, 23:30   #5
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  http: THTTPSend;
  s,p,i : string;
  l : integer;
begin
For l:=1 to StrToInt(Edit1.Text) do
Begin
z:=l;
a:=Memo5.Lines[l];
a1:=Copy(s,0,Pos(':',s)-1);
a2:=Copy(s,Pos(':',s)+1,9);
  http := THTTPSend.Create;
  try
   //настраиваем параметры прокси
   case cbTypeProxy.ItemIndex of
     0:begin
         HTTP.ProxyHost:=a1;
         HTTP.ProxyPort:=a2;
       end;
     1:HTTP.Sock.SocksType:=ST_Socks4;
     2:HTTP.Sock.SocksType:=ST_Socks5;
   end;
   if cbTypeProxy.ItemIndex>0 then
     begin
       HTTP.Sock.SocksIP:=a1;
       HTTP.Sock.SocksPort:=a2;
       HTTP.Sock.SocksResolver:=false;
     end;
  http.Document.Clear;
  http.Headers.Clear;
  HTTP.MimeType := 'application/x-www-form-urlencoded';
  HTTP.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51';
  HTTP.Protocol:= '1.1';
  HTTP.Headers.Add('Accept-Encoding: gzip,deflate');
  HTTP.Headers.Add('Accept-Language: ru-RU,ru;q=0.9,en;q=0.8');
  HTTP.Headers.Add('Expect: 100-continue');
  HTTP.HTTPMethod('GET', 'URL');
  HTTP.Cookies.SaveToFile('Cook.txt');
  Memo1.Lines.LoadFromStream(HTTP.Document);
...
Парсим
... 
  B1(self);
  finally
  HTTP.Free;
end;
end;
end;

procedure TForm1.B1(Sender: TObject);
var
  http: THTTPSend;
begin
  http := THTTPSend.Create;
  try
   //настраиваем параметры прокси
   case cbTypeProxy.ItemIndex of
     0:begin
         HTTP.ProxyHost:=a1;
         HTTP.ProxyPort:=a2;
       end;
     1:HTTP.Sock.SocksType:=ST_Socks4;
     2:HTTP.Sock.SocksType:=ST_Socks5;
   end;
   if cbTypeProxy.ItemIndex>0 then
     begin
       HTTP.Sock.SocksIP:=a1;
       HTTP.Sock.SocksPort:=a2;
       HTTP.Sock.SocksResolver:=false;
     end;
  http.Document.Clear;
  http.Headers.Clear;
  HTTP.MimeType := 'application/x-www-form-urlencoded';
  HTTP.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51';
  HTTP.Protocol:= '1.1';
  HTTP.Headers.Add('Accept-Encoding: gzip,deflate');
  HTTP.Headers.Add('Accept-Language: ru-RU,ru;q=0.9,en;q=0.8');
  HTTP.Headers.Add('Expect: 100-continue');
  HTTP.Cookies.LoadFromFile('Cook.txt');
  HTTP.HTTPMethod('GET', 'URL' + Результат парсинга);
  HTTP.Document.SaveToFile(IntToStr(z) + '.jpg');
  Edit5.Text:=recognize(IntToStr(z) + '.jpg',Edit6.Text,false,false,false,0,0);
  B2(self);
  finally
  HTTP.Free;
end;
end;

procedure TForm1.B2(Sender: TObject);
var
  http: THTTPSend;
  params: string;
begin
  http := THTTPSend.Create;
   try
   //настраиваем параметры прокси
   case cbTypeProxy.ItemIndex of
     0:begin
         HTTP.ProxyHost:=a1;
         HTTP.ProxyPort:=a2;
       end;
     1:HTTP.Sock.SocksType:=ST_Socks4;
     2:HTTP.Sock.SocksType:=ST_Socks5;
   end;
   if cbTypeProxy.ItemIndex>0 then
     begin
       HTTP.Sock.SocksIP:=a1;
       HTTP.Sock.SocksPort:=a2;
       HTTP.Sock.SocksResolver:=false;
     end;
  http.Document.Clear;
  http.Headers.Clear;
  params := 'login=' + Memo6.Lines[z] + '&name=' + Memo7.Lines[z] + '&email=' + Memo8.Lines[z] 
+ '&password=' + Memo9.Lines[z] + '&passwordtoo=' + Memo9.Lines[z] +  '&keystring=' + Edit5.Text;
  HTTP.MimeType := 'application/x-www-form-urlencoded';
  HTTP.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51';
  HTTP.Protocol:= '1.1';
  HTTP.Headers.Add('Accept-Encoding: gzip,deflate');
  HTTP.Headers.Add('Accept-Language: ru-RU,ru;q=0.9,en;q=0.8');
  HTTP.Headers.Add('Expect: 100-continue');
  HTTP.Document.Write(Pointer(Params)^, Length(Params));
  HTTP.Cookies.LoadFromFile('Cook.txt');
  HTTP.HTTPMethod('POST', 'URL');
  if HTTP.ResultCode = 302 then
  begin
  Memo2.Lines.Add(Memo6.Lines[z] + ':' + Memo9.Lines[z]);
  Memo10.Lines.Add(Memo6.Lines[z] + ':' + Memo9.Lines[z]);
  HTTP.Cookies.SaveToFile('Cook.txt');
  end;
  finally
  HTTP.Free;
end;
end;
Это регистратор, код этот отработан действительно много раз, изменяю всегда только мелочи типа URL и т.д. суть не в этом.
Задаю например циклов 10. Здесь начинается самое интересное, Первый цикл проходит нормально, второй только функция recognize, и вот так по очередности. Почему так происходит для меня загадка....
Далее в конце есть добавление в Memo2 и Memo6 данных, здесь еще лучше, добавляется только 5 штук и не одной больше строк. То есть ставим 12 циклов, из них удачно выполнятся (50%) 6 а строк добавится 5.
Где я это прописал? Глобальные переменные в порядке, все как всегда.
Смеятся можно долго над такой чудо программой и все же.
Зод вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о напечатании повторно рандомных символов XanderXage Помощь студентам 2 12.10.2011 20:18
Ошибка открытия MDB файла повторно artemavd БД в Delphi 2 11.10.2010 17:22
как повторно вызвать процедуру? iiunbreakableii Общие вопросы Delphi 8 24.06.2010 13:32
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34