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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2012, 00:13   #1
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию Виснет программа

Смысл в том,чтобы отправлялись сообщения на стену по заданному диапазону.Например: начальный id группы 10,а конечный id 20 ,в группы в этом интервале будут отправлены сообщения.Все выполняется через мобильную версию.

Код:
var
s,hash,ConnectToGroup:string;
GroupNumber1,toGroupNumber1:integer;
  begin
    GroupNumber1:=StrToInt(GroupNumber.Text);//начальное ID гуппы
    toGroupNumber1:=StrToInt(toGroupNumber.Text);//конечное ID гуппы
     form1.Memo1.Clear;
   while GroupNumber1 <= toGroupNumber1 do
    begin
    if GroupNumber1 = toGroupNumber1 then
    begin
      messagebox(0,'Готово! :)','Vk_Spamer',MB_OK or MB_ICONINFORMATION);
    end
     else
    S:=form1.IdHTTP1.get('http://m.vk.com/wall-'+IntToStr(GroupNumber1) );
    hash:=Copy(S, Pos('post&hash=', S)+10, 18);
     if Pos('<a name="posts"></a>',S)<>0 then
     begin
     form1.IdHTTP1.get('http://m.vk.com/wall-'+IntToStr(GroupNumber1)+'?act=post&hash='+hash+'&message='+UrlEncode(ansitoutf8(Memo1.Text)));
     form1.Memo1.Lines.Add('Сообщение отправленно в группу'+IntToStr(GroupNumber1) );
     GroupNumber1:=GroupNumber1+1;
     end
      else
      begin
      form1.Memo1.Lines.Add('Ошибка!Невозможно отправить сообщение в группу'+IntToStr(GroupNumber1) );
      GroupNumber1:=GroupNumber1+1;
       end;

    end;
  try
  form1.IdHTTP1.Disconnect;
except
end;
end;
Сообщения отправляются,но программа виснет через некоторое время.
Интервал такой: начальное значение 19839976 ,а конечное 19839985.
Когда программа доходит до группы под номером 19839982,то она зависает и больше ничего не происходит.
С чем это может быть связано?

Последний раз редактировалось Mrsqler; 05.07.2012 в 00:18.
Mrsqler вне форума Ответить с цитированием
Старый 05.07.2012, 02:16   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Если этот код в главном потоке - не странно, что виснет )
Запускайте в отдельном потоке!
Если подвисает именно на этой группе, значит какие-то проблемы там, смотрите что возвращаеться, код ошибки.
Delphi_ProGer вне форума Ответить с цитированием
Старый 05.07.2012, 03:44   #3
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

А как запустить в отдельном потоке?)
Mrsqler вне форума Ответить с цитированием
Старый 05.07.2012, 07:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А как запустить в отдельном потоке?)
Как вариант:
Код:
while GroupNumber1 <= toGroupNumber1 do sleep(10); Application.ProcessMessages;
...
Это не доппоток, но все же.
И кинь на форму IdAtifreeze чтоб разлочивал инди.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.07.2012, 12:52   #5
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Mrsqler Посмотреть сообщение
А как запустить в отдельном потоке?)
Tthread or через Win API
Delphi_ProGer вне форума Ответить с цитированием
Старый 05.07.2012, 13:06   #6
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Всё равно виснет.Он где-то 6-8 групп обрабатывает,и всё.. IdAtifreeze кинул
Mrsqler вне форума Ответить с цитированием
Старый 05.07.2012, 13:55   #7
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Говорю же, сделай в отдельном потоке, и посмотри почему там зависает, что там долго грузит.
Delphi_ProGer вне форума Ответить с цитированием
Старый 08.07.2012, 01:46   #8
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Сделал в отдельном потоке,когда пытаюсь запустить поток,то ничего не происходит.Что опять не так?((
Компилировал в Delphi 2010

Пока что пытаюсь реализовать только работу с группами,до ID потом сам додумаюсь думаю.
Вложения
Тип файла: zip Vk_Spamer.zip (647.5 Кб, 6 просмотров)

Последний раз редактировалось Mrsqler; 08.07.2012 в 01:53.
Mrsqler вне форума Ответить с цитированием
Старый 08.07.2012, 08:06   #9
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Емае а!А вам не приходила в голову идея сделать проверку на то можно ли вам писать на стене группы.
собственно код:
Код:
var
s,hash,ConnectToGroup:string;
GroupNumber1,toGroupNumber1:integer;
  begin
    GroupNumber1:=StrToInt(GroupNumber.Text);//начальное ID гуппы
    toGroupNumber1:=StrToInt(toGroupNumber.Text);//конечное ID гуппы
     form1.Memo1.Clear;
   while GroupNumber1 <= toGroupNumber1 do
    begin
    if GroupNumber1 = toGroupNumber1 then
    begin
      messagebox(0,'Готово! :)','Vk_Spamer',MB_OK or MB_ICONINFORMATION);
    end
     else
    S:=form1.IdHTTP1.get('http://m.vk.com/wall-'+IntToStr(GroupNumber1) );
    hash:=Copy(S, Pos('post&hash=', S)+10, 18);
     if Pos('<input class="btn" type="submit" value="Отправить" />',S)>0 then
     begin
     form1.IdHTTP1.get('http://m.vk.com/wall-'+IntToStr(GroupNumber1)+'?act=post&hash='+hash+'&message='+UrlEncode(ansitoutf8(Memo1.Text)));
     form1.Memo1.Lines.Add('Сообщение отправленно в группу'+IntToStr(GroupNumber1) );
     GroupNumber1:=GroupNumber1+1;
     end
      else
      begin
      form1.Memo1.Lines.Add('Ошибка!Невозможно отправить сообщение в группу'+IntToStr(GroupNumber1) );
      GroupNumber1:=GroupNumber1+1;
       end;

    end;
  try
  form1.IdHTTP1.Disconnect;
except
end;
end;
Кольша вне форума Ответить с цитированием
Старый 08.07.2012, 12:19   #10
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Приходила,и я её сделал)

Код:
if Pos('<a name="posts"></a>',S)<>0 then //это и есть проверка
     begin
     form1.IdHTTP1.get('http://m.vk.com/wall-'+IntToStr(GroupNumber1)+'?act=post&hash='+hash+'&message='+UrlEncode(ansitoutf8(Memo1.Text)));
     form1.Memo1.Lines.Add('Сообщение отправленно в группу'+IntToStr(GroupNumber1) );
     GroupNumber1:=GroupNumber1+1;
     end
      else
      begin
      form1.Memo1.Lines.Add('Ошибка!Невозможно отправить сообщение в группу'+IntToStr(GroupNumber1) );
      GroupNumber1:=GroupNumber1+1;
       end;
Дело в том,что я использую английскую версию VK,а также все действия происходят через мобильную версию,а не через обычную.
Когда пытаюсь начать рассылку,то появляется вот такая ошибка



Еще бывает такая

Последний раз редактировалось Mrsqler; 08.07.2012 в 12:27.
Mrsqler вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виснет приложение... DarkApostol Помощь студентам 2 15.03.2012 15:28
виснет программа LUXEOR C++ Builder 0 27.01.2012 23:20
Программа виснет на CreateWindowEx YourLastSong Win Api 8 12.01.2012 02:09
Виснет программа на Windows Form pro100saniok Помощь студентам 0 23.03.2011 12:08
Программа виснет при исполнении цикла Dima_D Общие вопросы Delphi 9 16.08.2010 23:45