Считывание объявлений

Здесь обсуждаются технические аспекты создания дополнений.
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

Re: Считывание объявлений

Сообщение $teelR@t »

ОреЛ писал(а):Максим, скажите пожалуйста, считывание объявлений возможно без подключения виртуального пользователя? И получение событий Добавления/Редактирования/Удаления объявления/комментария тоже возможно без подключения виртуального пользователя?
Читайте внимательно документацию. Если там не написано, что надо передавать параметром ник виртуального пользователя (а там этого НЕ НАПИСАНО), то значит можно считывать без подключения сего ботинка. Аналогично и с приемом событий.
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Re: Считывание объявлений

Сообщение Maxim Mirgorodsky »

Все верно, если событие связано с виртуальным пользователем, то передается его имя.
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Подскажите в чем ошибка?(Идет получение информации объявление - нужен именно ник объявления по определенному ID'у) Плагин серверный.
iReadOffset := 0;
aDataToSend := fIntegerToAnsiString(cID);
iBufLength := CommFortGetData(dwPluginID, 1072, NIL , 0, PAnsiChar(aDataToSend), Length(aDataToSend));
SetLength(aReciviedData, iBufLength);

CommFortGetData(dwPluginID, 1072, PAnsiChar(aReciviedData), Length(aReciviedData), PAnsiChar(aDataToSend), Length(aDataToSend));
cTime:=fReadDouble(PAnsiChar(aReciviedData), iReadOffset);
cTime2:=fReadDouble(PAnsiChar(aReciviedData), iReadOffset);
cNick:=fReadText(PAnsiChar(aReciviedData), iReadOffset);

function fReadDouble(bInBuffer : PAnsiChar; var iOffset : Integer): Double;
begin
CopyMemory(@Result, bInBuffer + iOffSet, 8);
iOffset := iOffset + 8;
end;
Если убрать присваивание значений от полученных данных, то код работает. То есть проблема в том, что не могу данные получить.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

Re: Считывание объявлений

Сообщение ОреЛ »

Случаем, не стоило бы проверять на пустоту пришедшего блока?
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Думаю смысла нету. Идет событие - новый комментарий. Из этого комментария вытаскиваю ID главного объявления, которое прокомментировано. А по этому ID запрашиваю информацию об главном объявлении.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Re: Считывание объявлений

Сообщение Maxim Mirgorodsky »

Просьба уточнить что именно не работает? Правильные ли значения даты/времени и срока? Что означает "Если убрать присваивание значений от полученных данных, то код работает."? Каково значение объема входящего блока данных?
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Не могу получить данные от запроса. Сам запрос проходит нормально.
Что означает "Если убрать присваивание значений от полученных данных, то код работает."
То есть, если сделать запрос без обработки данных и присваивании переменных, то работает. Как я понял моя ошибка в том, что не могу обработать блок данных от запроса именно даты/времени и срока. В этом и загвоздка.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Re: Считывание объявлений

Сообщение Maxim Mirgorodsky »

Тогда смотрите iOffset, корректно ли он изменяется после чтения данных.
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Сейчас проверил iReadOffset - пришел пустой блок. Значит неправильный ID объявление запрашивается. В инструкции оказывается был ID комментария при событии "Добавление комментария к объявлению", а не ID самого объявления.. Поэтому и не получалось. :(
Вопрос тогда в другом. Мне нужно при событии "Добавление комментария к объявлению" узнать кто является автором объявления, к которому был сделан новый комментарий.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

Re: Считывание объявлений

Сообщение ОреЛ »

У меня была схожая проблема, когда, при добавлении объявления, мне надо было знать ID раздела. Приходилось по всем разделам проходить и искать объявление с таким же ID объявления, как и добавленное. У вас проблема даже еще хуже, ведь вам надо получать данные еще и по каждому объявлению для поиска комментария с нужным ID.
Данных приходит слишком мало. Пришло объявление? Дайте ID раздела и ID объявления.
Пришел комментарий? ID раздела, ID объявления, ID комментария.
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Думал написать плагин, что бы при комментировании объявления автору объявления приходило оповещение о том что, его объявление было прокомментировано. Но сейчас понимаю, что это почти не реально реализовать.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Re: Считывание объявлений

Сообщение Maxim Mirgorodsky »

Ничего сложного нет пробежаться по данным. Так как количество разделов/объявлений и комментариев жестко ограничено, то и вычислительных ресурсов затрачиваться на поиск необходимого объявления будет немного. Но и с нашей стороне конечно же стоило прикреплять к данным ID объявления...
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

Re: Считывание объявлений

Сообщение ОреЛ »

leonbratsk писал(а):Думал написать плагин, что бы при комментировании объявления автору объявления приходило оповещение о том что, его объявление было прокомментировано. Но сейчас понимаю, что это почти не реально реализовать.
Получаешь событие о новом комментарии. Запрашиваешь все разделы ДО. Проходишь по всем разделам, запрашивая все объявления. У каждого объявления запрашиваешь данные. Если комментариев у объявления нет, то идешь к следующему. Если комментарии есть, проходишь по всем и ищешь нужный ID.
Попробуй сделать, а потом посмотри, много ли это отнимает ресурсов и времени на выполнение.
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Чувствую, что я это не осилю. Может кто-нибудь захочет в совместности написать?
Скорей всего будет мало памяти требовать, допустим 6 разделов.
Получается 3 цикла в одном. Получение всех разделов(у нас есть ид всех разделов)>запрашиваем по первому разделу все обьявиения(есть ид обьявилений всех+ проверяем если комментарии в объявлении, если нету,то пропускаем его)>запрашиваем информацию о объявлении, в этот момент сверяем с идом нового комментария. Находим - прерываем весь цикл и делаем дальше, что нам нужно.
:)
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
Аватара пользователя
leonbratsk
Сообщения: 488
Зарегистрирован: 14:07, 21.03.2010

Re: Считывание объявлений

Сообщение leonbratsk »

Долго и упорно писал, и наконец-то получилось. :D Кому потребуется код в лс пишите.
Интересно сколько займет вычислительных ресурсов на все это дело.
Чат CommFort города Братск "SkyLine"
адрес: vcommforte.com или 194.146.200.130
версия сервера: 5.40
Ответить