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

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

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

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

Мне правда никто не сможет помочь?
http://www.commfort.com/ru/forum/viewto ... 607#p48607
Мне очень надо
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

Сообщение @serg@ »

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

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

Сообщение @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);
Указывать надо не количество байт а количество символов.
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

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

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

@serg@ писал(а):Указывать надо не количество байт а количество символов.
О чем вы? Сначала копируется 4 байт, содержащее количество символов в текста, потом копируется сам текст.
Жду еще комментариев.
Последний раз редактировалось ОреЛ 20:05, 20.11.2010, всего редактировалось 1 раз.
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

Сообщение @serg@ »

ОреЛ писал(а):О чем вы? Сначала копируется 4 байт, содержащее количество символов в текста, потом копируется сам текст.
Жду еще комментариев.
Вот именно, нужно количество символов в тексте а не байт.
int len = VirtualUser.Length() * 2
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

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

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

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

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

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

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

Добавьте пожалуйста функцию получения приветствия указанного канала :)
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

Сделаем.
Аватара пользователя
~LONSDALE~
Сообщения: 145
Зарегистрирован: 14:38, 09.03.2008
Контактная информация:

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

Сообщение ~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;


вылетают ошибки при наступлении этого события. Что я упустил?
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

Сообщение @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;


вылетают ошибки при наступлении этого события. Что я упустил?
А где размерности заносимых данных?
Аватара пользователя
~LONSDALE~
Сообщения: 145
Зарегистрирован: 14:38, 09.03.2008
Контактная информация:

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

Сообщение ~LONSDALE~ »

А что там нужно коннретнее можно?
Кто может помочь с кодом на делфи очень буду благодарен.
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

Сообщение @serg@ »

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

какие именно функции есть в дельфи не знаю но на мето выделенных нужно поставить их смысловые аналоги.
Аватара пользователя
dv
Сообщения: 1845
Зарегистрирован: 10:28, 11.05.2007
Откуда: Краснодар

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

Сообщение dv »

Maxim Mirgorodsky писал(а):Изменения по системе плагинов в клиенте 5.03:
...
Документация по плагинам обновлена.
...
Сделайте пример для Delphi
Дополнения для CommFort
Адрес чата: chat.telered.ru




.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Его же делал SJ. Он полностью идентичен официальному примеру на СИ
Закрыто