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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2010, 18:34   #1
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
По умолчанию получить текст сообщения вконтакте

прошу помочь исходным кодом и компонентами которые нужны для работоспособности этого кода. Спасибо.
Dionix вне форума Ответить с цитированием
Старый 11.07.2010, 18:37   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Я не знаю что такое "вконтакте"... И не знаю что там за сообщения...
Но полагаю что нужно получение текста страницы и его парсинг...
Посмотрите компоненты Indy...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 11.07.2010, 18:40   #3
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
По умолчанию

да, именно парсинг страницы. но нужно распознать новые и старые сообщения и сразу их передавать в программу. Та вот смотрю на эти инди и ничего в голову не приходит
Dionix вне форума Ответить с цитированием
Старый 11.07.2010, 19:13   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Та вот смотрю на эти инди и ничего в голову не приходит
Зачем смотреть-то? Открываете Яндекс, пишите в строку поиска что-то вроде "получение текста html страницы, Indy" - и готово... ))
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 11.07.2010, 23:33   #5
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Получение новых сообщений
Код:
function VK_ParsEmail(s:string; IdHTTP1:TIdHTTP): TStringList;
var
  i : Integer;
  mess_full, mess_text,
  mess_id, mess_new,
  mess_aut, mess_aut_id,
  mess_date, mess_title : string;
  sl : TStringList;
begin
  Result := TStringList.Create;
  i := 1;
  s := Copy(s,PosEx('</tr>',s,Pos('<div id="messages_wrap">',s))+6,PosEx('</table>',s,Pos('<div id="messages_wrap">',s))-PosEx('</tr>',s,Pos('<div id="messages_wrap">',s))-6);
  while PosEx('<tr ',s,i)<>0 do
  begin
    mess_full := Copy(s,PosEx('<tr ',s,i),PosEx('</tr>',s,PosEx('<tr ',s,i))-PosEx('<tr ',s,i));

    // Ïîëó÷åíèå id ñîîáùåíèÿ
    mess_id := Copy(mess_full,Pos('id="',mess_full)+8,PosEx('"',mess_full,Pos('id="',mess_full)+9)-Pos('id="',mess_full)-8);

    // íîâîå ëè ýòî ñîîáùåíèå
    if Pos('class='+#39+'newRow'+#39,mess_full)<>0 then mess_new := '1' else mess_new := '0';

    if mess_new = '1' then
    begin
      // Îò êîãî ñîîáùåíèå
      mess_aut := Copy(mess_full,PosEx('">',mess_full,Pos('<div class="name">',mess_full)+19)+2,PosEx('</a>',mess_full,PosEx('">',mess_full,Pos('<div class="name">',mess_full)+19)+3)-PosEx('">',mess_full,Pos('<div class="name">',mess_full)+19)-2);

      // ÈÄ ïîëüçîâàòåëÿ, êîòîðûé ïðèñëàë ñîîáùåíèå
      mess_aut_id := Copy(mess_full,Pos('href="',mess_full)+7,PosEx('">',mess_full,Pos('href="',mess_full)+8)-Pos('href="',mess_full)-7);

      // Äàòà, êîãäà ïðèøëî ñîîáùåíèå
      mess_date := Copy(mess_full,Pos('class="date">',mess_full)+13,PosEx('</div',mess_full,Pos('class="date">',mess_full)+14)-Pos('class="date">',mess_full)-13);

      //Òåìà ñîîáùåíèÿ
      mess_title := Copy(mess_full,PosEx('<span>',mess_full,Pos('new messageSubject',mess_full))+6,PosEx('</span>',mess_full,Pos('new messageSubject',mess_full))-PosEx('<span>',mess_full,Pos('new messageSubject',mess_full))-6);

      // Òåêñò ñîîáùåíèÿ
      mess_text := IdHTTP1.Get('http://vkontakte.ru/mail.php?act=show&id='+ mess_id);
      mess_text := Copy(mess_text,PosEx(';">',mess_text,Pos('class="messageText"',mess_text))+3,PosEx('</div>',mess_text,Pos('class="messageText"',mess_text))-PosEx(';">',mess_text,Pos('class="messageText"',mess_text))-3);
    end;

    Result.Add(mess_aut+' '+mess_aut_id+' '+mess_date+' '+mess_text);
    i := PosEx('<tr ',s,i)+2;
    Sleep(300);
  end;
end;
Пример использования
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
  Memo1.Lines := VK_ParsEmail(IdHTTP1.Get('http://vkontakte.ru/mail.php'),IdHTTP1)
end;
kangreon вне форума Ответить с цитированием
Старый 12.07.2010, 00:34   #6
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Люди с ума сошли с этим Вконтакте. Создайте уже раздел и постите свои функи, ну или чужие. Будет больше пользы чем 1000 топиков типа: как авторизироваться, как получить сообщения, как отослать сообщения и т.д.
W0LF вне форума Ответить с цитированием
Старый 12.07.2010, 10:22   #7
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
Люди с ума сошли с этим Вконтакте. Создайте уже раздел и постите свои функи, ну или чужие. Будет больше пользы чем 1000 топиков типа: как авторизироваться, как получить сообщения, как отослать сообщения и т.д.
Сделано =)

Спасибо за помощь всем!
Dionix вне форума Ответить с цитированием
Старый 12.07.2010, 10:34   #8
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
По умолчанию

только проблемка...оно первое сообщение ровно 20 раз выводит
Dionix вне форума Ответить с цитированием
Старый 12.07.2010, 13:31   #9
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Я забыл Result занести в if mess_new = '1' then
kangreon вне форума Ответить с цитированием
Старый 12.07.2010, 14:37   #10
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
По умолчанию

а что надо именно сделать с резалтом? напиши плизз
Dionix вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Application.MessageBox текст сообщения Polotenchik Общие вопросы Delphi 7 01.03.2011 20:26
Дан файл, содержащий текст, записанный строчными русскими буквами. Получить в др.файле тот же текст, develish151 Microsoft Office Word 4 05.05.2010 13:20
Сообщения Вконтакте(проблема) viks1 Свободное общение 7 13.03.2010 15:51
Как получить текст из примечания? Людмилка Microsoft Office Excel 2 30.07.2008 08:36
Как изменить текст сообщения при нажатии на кнопку? motaro Помощь студентам 2 14.07.2007 13:15