Технология создания плагинов и программ-дополнений

Здесь обсуждаются графические оболочки, боты, языковые файлы и другие дополнения к CommFort 4.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

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

Сообщение -=SJ=- »

Еще одно очень важное пожелание для клиентских плагинов - добавить возможность самоидентификации плагином, т.е. возможность узнать под какой учетной записью клиент с установленным плагином подключен к чату.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Скачал null плагин для версии 4.10. В нем написан такой комментарий "//Если снять комментарий ниже, то все сообщения..." я снял необходимый комментарий:
вот тут /*if(dwMessageID==0)
{
bMessage[0]='x';
bMessage[1]='x';
bMessage[2]='x';
...................................

(*dwMessageLength) = 3;
return TRUE;
} */ и тут

Но плагин все равно не работает. Среду разработки я использую Borland C++ 6.0. Подскажите где ошибка.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

Проблема, скорее всего, в настройках среды разработки (и проекта).

Но плагин все равно не работает.

Нужна подробная информация: что именно не работает.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Вот такая причина. После того как я скачал проект и убрал коментарии я его скомпилировал. Получилась DLL-библиотека, я взял эту библиотеку и дал ей имя plug1 и поменял расширение с dll на cfsplug. Поместил этот файл в папку Plugins что на сервере. Запускаю сервер и чат и... виртуальный пользователь не подключен. Может это и среда разработки виноватая так как Вы использовали (я так думаю) Borland Developer Studio 2006, а я Borland C++ Builder 6.0. Но эти среды разработки - это одно то самое (только версии другие) и проекты, которые написаны в Borland Developer Studio идут на Borland C++ Builder 6.0 и на оборот.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

Убедитесь, что использовуется соглашение _stdcall и что отключено декорирование имен экспортируемых функций (ссылка на статью содержащую информацию как это сделать в разных средах программирования была в этой теме ранее).
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Я подключил директиву __stdcall и все заработало. Спасибо также Вам за то, что дали ссылку на сайт www.progz.ru. Там я нашел все что нужно об DLL библиотеках. У меня возник один вопрос. Почему Вы в своем примере заранее не подключили директиву __stdcall для всех функций?
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

В настройках проекта установлен именно вызов "__stdcall" (видимо, при портировании на BCB6 эта настройка не сохранилась).
Аватара пользователя
~LONSDALE~
Сообщения: 145
Зарегистрирован: 14:38, 09.03.2008
Контактная информация:

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

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

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

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

Сообщение dv »

[Cообщeние yдалено]
Последний раз редактировалось dv 08:10, 29.06.2012, всего редактировалось 1 раз.
Дополнения для CommFort
Адрес чата: chat.telered.ru




.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Товарищи программисты. Тут решил на днях освоить плагины. Вопрос на засыпку для тех кто писал плагины с примера который выложил автор этого чата. Кстати, те которые не знают С++ лучше не отвечайте на данный вопрос. Не могу понять, даже логики никакой нет, вот нужно мне файл предположим file001.dat прочитать построчно. Ну я сделал как всегда( это относится все к функции Premoderation):
TStringList*kol=new TStringList; //динамически выделил память
kol->LoadFromFile("file001.dat"); //через указатель обратился к файлу

for (int i=0;i<kol->Count;i++) // тут в цикле прочитал строки
s=kol->Strings;

Не могу понять одного. Когда, например, я это все пишу перед оператором
if (dwMessageID==0){...}, тогда плагин вообще отказывается работать, и ничего с файла не читает и в чат ничего не выводит. Может я что-то пропустил, может не доглядел. Подскажите пожалуйста.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
sonic
Сообщения: 43
Зарегистрирован: 01:14, 05.12.2007

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

Сообщение sonic »

VIRUS писал(а):Товарищи программисты. Тут решил на днях освоить плагины. Вопрос на засыпку для тех кто писал плагины с примера который выложил автор этого чата. Кстати, те которые не знают С++ лучше не отвечайте на данный вопрос. Не могу понять, даже логики никакой нет, вот нужно мне файл предположим file001.dat прочитать построчно. Ну я сделал как всегда( это относится все к функции Premoderation):
TStringList*kol=new TStringList; //динамически выделил память
kol->LoadFromFile("file001.dat"); //через указатель обратился к файлу

for (int i=0;i<kol->Count;i++) // тут в цикле прочитал строки
s=kol->Strings;

Не могу понять одного. Когда, например, я это все пишу перед оператором
if (dwMessageID==0){...}, тогда плагин вообще отказывается работать, и ничего с файла не читает и в чат ничего не выводит. Может я что-то пропустил, может не доглядел. Подскажите пожалуйста.


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

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

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

Не могу точно подсказать причину проблемы, но могу сказать что загрузка файла при каждом запросе на премодерацию спровоцирует чудовищное потребление системных ресурсов, так делать категорически нельзя.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Все таки я разобрался в чем была проблема того, что файл не читался, оказывается в BCB 6.0 есть маленький сюрприз путь к файлу нужно прописывать полный и в таком формате:

TStringList*kol=new TStringList;
kol->LoadFromFile("C:\\plagin\\file001.dat");

Вот и все :D . Долго я хелп листал :lol: . Кстати я с вами согласен, что лучше не открывать по сто раз файл. Это я уже исправил.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Не могу разобраться как правильно отправлять сообщение от плагина к клиенту (серверный плагин). В функции PluginProcess расположен вызов функции через указатель (*CommFortProcess)(dwPluginID,20,aMessageToSend.c_str(),aMessageToSend.Length()) для отправки сообщения программе. Как правильно через неё послать сообщение? Я убирал коментарии и переменной aMessageToSend присваивал строку например aMessageToSend="test". Но ничего не происходит. Подскажите пожалуйста. Как правильно с этой функцией (для отправки сообщений) работать.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

Необходимо просто ее вызывать с необходимыми параметрами (не забудьте указывать верный dwPluginID, полученный при инициализации).
Закрыто