Страница 16 из 26

Re: Технология создания плагинов

Добавлено: 13:50, 20.11.2010
ОреЛ
Мне правда никто не сможет помочь?
http://www.commfort.com/ru/forum/viewto ... 607#p48607
Мне очень надо

Re: Технология создания плагинов

Добавлено: 14:03, 20.11.2010
@serg@
ОреЛ писал(а):Мне правда никто не сможет помочь?
http://www.commfort.com/ru/forum/viewto ... 607#p48607
Мне очень надо
Данным запросом я пока не пользовался, но то что виртуальный пользователь вообще должен быть подключён к чату это точно на 99%. Формат сообщения я так понял, исправили и он теперь полностью соответствует описанному в документации. Но сегодня я его точно буду использовать, о результатах отпишусь.

Re: Технология создания плагинов

Добавлено: 15:20, 20.11.2010
@serg@
ОреЛ писал(а): int size = VirtualUser.Length() * 2 + 4;
int len = VirtualUser.Length() * 2;
BYTE * bOutBuffer = new BYTE[size];
memcpy(bOutBuffer, &len, 4);
memcpy(bOutBuffer + 4, VirtualUser.c_str(), len * 2);
int dwInBufferSize = (*CommFortGetData)(dwPluginID, 1080, 0, 0, bOutBuffer, size);
BYTE * bInBuffer = new BYTE[dwInBufferSize];
(*CommFortGetData)(dwPluginID, 1080, bInBuffer, dwInBufferSize, bOutBuffer, size);
int countChannels;
memcpy(&countChannels, bInBuffer, 4);
Указывать надо не количество байт а количество символов.

Re: Технология создания плагинов

Добавлено: 15:55, 20.11.2010
ОреЛ
@serg@ писал(а):Указывать надо не количество байт а количество символов.
О чем вы? Сначала копируется 4 байт, содержащее количество символов в текста, потом копируется сам текст.
Жду еще комментариев.

Re: Технология создания плагинов

Добавлено: 16:07, 20.11.2010
@serg@
ОреЛ писал(а):О чем вы? Сначала копируется 4 байт, содержащее количество символов в текста, потом копируется сам текст.
Жду еще комментариев.
Вот именно, нужно количество символов в тексте а не байт.
int len = VirtualUser.Length() * 2

Re: Технология создания плагинов

Добавлено: 09:11, 23.11.2010
Maxim Mirgorodsky
ОреЛ писал(а):Скажите, что будет, если виртуальный пользователя забанен, например, на отправку сообщений в канал, а он будет пытаться совершить это действие?
Оно будет игнорироваться.
@serg@ писал(а):Maxim Mirgorodsky, очень хотелось-бы видеть событие (серверное), информирующее о появлении нового объявления (хотя бы только с его id). И вообще я немного не понял. на клиентской стороне список объявлений храниться где-то в файле или получается при каждом подключении к серверу? Ведь данные всёравно получаются клиентом при появлении нового объявлении, почемубы получение данных плагином (в событии) не совместить с событие получения данных клиентом, без возможности дополнительного запроса со списком/содержанием.
Событие о новом объявлении на сервере реализуем. Клиент же получает только дату и время последней публикации.

Re: Технология создания плагинов

Добавлено: 09:20, 23.11.2010
Maxim Mirgorodsky
ZigZagkms писал(а):Вопрос к разработчикам сервера. Чем грозит использование импортируемых функций в дочерних потоках, и почему?
Обычными проблемами незащищенной многопоточности. К одной и той же области памяти будет одновременно идти обращение из разных потоков. Как результат - ошибки.

Re: Технология создания плагинов

Добавлено: 04:02, 24.11.2010
$teelR@t
Добавьте пожалуйста функцию получения приветствия указанного канала :)

Re: Технология создания плагинов

Добавлено: 07:55, 24.11.2010
Maxim Mirgorodsky
Сделаем.

Re: Технология создания плагинов

Добавлено: 01:16, 25.11.2010
~LONSDALE~
@serg@ писал(а):ну как на дельфи реализовать я не могу подсказать, если работаешь с формами, то там есть специальный компонент, если без форм то постов 10 назад был пример как это реализовать на с++, думаю можно легко переписать под твои нужды.
Нечего не получаеться,может что то я упустил. В OnTimer написал следуёщий код:

Код: Выделить всё

procedure TForm1.Timer1Timer(Sender: TObject);
var
  bInBuffer : PAnsiChar; aDataToSend : AnsiString;
  iReadOffset:integer;
begin
    aDataToSend := fTextToAnsiString('user')+  
    fIntegerToAnsiString(0)+  
    fTextToAnsiString('main')+
    fTextToAnsiString('Всё норм'); 
    CommFortProcess(dwPluginID, 1020, PAnsiChar(aDataToSend), Length(aDataToSend));
end;


вылетают ошибки при наступлении этого события. Что я упустил?

Re: Технология создания плагинов

Добавлено: 06:55, 25.11.2010
@serg@
~LONSDALE~ писал(а): Нечего не получаеться,может что то я упустил. В OnTimer написал следуёщий код:

Код: Выделить всё

procedure TForm1.Timer1Timer(Sender: TObject);
var
  bInBuffer : PAnsiChar; aDataToSend : AnsiString;
  iReadOffset:integer;
begin
    aDataToSend := fTextToAnsiString('user')+  
    fIntegerToAnsiString(0)+  
    fTextToAnsiString('main')+
    fTextToAnsiString('Всё норм'); 
    CommFortProcess(dwPluginID, 1020, PAnsiChar(aDataToSend), Length(aDataToSend));
end;


вылетают ошибки при наступлении этого события. Что я упустил?
А где размерности заносимых данных?

Re: Технология создания плагинов

Добавлено: 00:20, 26.11.2010
~LONSDALE~
А что там нужно коннретнее можно?
Кто может помочь с кодом на делфи очень буду благодарен.

Re: Технология создания плагинов

Добавлено: 00:35, 26.11.2010
@serg@
~LONSDALE~ писал(а):А что там нужно коннретнее можно?
Кто может помочь с кодом на делфи очень буду благодарен.
Данные из документации:
Текстовые данные в кодировке UTF16. Представляют из себя число(количество символов) + сам текст. Каждый символ содержит 2 байта, то есть занимаемая самим текстом память в байтах равна числу символов умноженному на 2.
Точно не знаю как на дельфи но перед каждой строкой должен быть записан её разер, что-то типо
...+fIntegerToAnsiString(StrLen('main'))+fTextToAnsiString('main')+
fIntegertToAnsiString(StrLen('Всё норм'))+fTextToAnsiString('Всё норм')

какие именно функции есть в дельфи не знаю но на мето выделенных нужно поставить их смысловые аналоги.

Re: Технология создания плагинов

Добавлено: 10:35, 26.11.2010
dv
Maxim Mirgorodsky писал(а):Изменения по системе плагинов в клиенте 5.03:
...
Документация по плагинам обновлена.
...
Сделайте пример для Delphi

Re: Технология создания плагинов

Добавлено: 13:35, 28.11.2010
Cilvay
Его же делал SJ. Он полностью идентичен официальному примеру на СИ