Страница 6 из 42

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

Добавлено: 13:49, 29.12.2008
-=SJ=-
Еще одно очень важное пожелание для клиентских плагинов - добавить возможность самоидентификации плагином, т.е. возможность узнать под какой учетной записью клиент с установленным плагином подключен к чату.

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

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

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

Но плагин все равно не работает. Среду разработки я использую Borland C++ 6.0. Подскажите где ошибка.

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

Добавлено: 15:05, 04.01.2009
Maxim Mirgorodsky
Проблема, скорее всего, в настройках среды разработки (и проекта).

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

Нужна подробная информация: что именно не работает.

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

Добавлено: 15:39, 04.01.2009
VIRUS
Вот такая причина. После того как я скачал проект и убрал коментарии я его скомпилировал. Получилась DLL-библиотека, я взял эту библиотеку и дал ей имя plug1 и поменял расширение с dll на cfsplug. Поместил этот файл в папку Plugins что на сервере. Запускаю сервер и чат и... виртуальный пользователь не подключен. Может это и среда разработки виноватая так как Вы использовали (я так думаю) Borland Developer Studio 2006, а я Borland C++ Builder 6.0. Но эти среды разработки - это одно то самое (только версии другие) и проекты, которые написаны в Borland Developer Studio идут на Borland C++ Builder 6.0 и на оборот.

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

Добавлено: 16:07, 04.01.2009
Maxim Mirgorodsky
Убедитесь, что использовуется соглашение _stdcall и что отключено декорирование имен экспортируемых функций (ссылка на статью содержащую информацию как это сделать в разных средах программирования была в этой теме ранее).

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

Добавлено: 11:17, 05.01.2009
VIRUS
Я подключил директиву __stdcall и все заработало. Спасибо также Вам за то, что дали ссылку на сайт www.progz.ru. Там я нашел все что нужно об DLL библиотеках. У меня возник один вопрос. Почему Вы в своем примере заранее не подключили директиву __stdcall для всех функций?

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

Добавлено: 13:26, 06.01.2009
Maxim Mirgorodsky
В настройках проекта установлен именно вызов "__stdcall" (видимо, при портировании на BCB6 эта настройка не сохранилась).

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

Добавлено: 01:02, 07.01.2009
~LONSDALE~
Доброе время суток.
Поделитесь исходниками на delphi если есть у каво.

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

Добавлено: 07:43, 07.01.2009
dv
[Cообщeние yдалено]

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

Добавлено: 20:35, 09.01.2009
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){...}, тогда плагин вообще отказывается работать, и ничего с файла не читает и в чат ничего не выводит. Может я что-то пропустил, может не доглядел. Подскажите пожалуйста.

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

Добавлено: 20:53, 09.01.2009
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){...}, тогда плагин вообще отказывается работать, и ничего с файла не читает и в чат ничего не выводит. Может я что-то пропустил, может не доглядел. Подскажите пожалуйста.


так не только в цпп, на делфи когда пробовал написать плагин, с функцией премодерации также было

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

Добавлено: 09:50, 11.01.2009
Maxim Mirgorodsky
Не могу точно подсказать причину проблемы, но могу сказать что загрузка файла при каждом запросе на премодерацию спровоцирует чудовищное потребление системных ресурсов, так делать категорически нельзя.

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

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

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

Вот и все :D . Долго я хелп листал :lol: . Кстати я с вами согласен, что лучше не открывать по сто раз файл. Это я уже исправил.

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

Добавлено: 11:15, 13.01.2009
VIRUS
Не могу разобраться как правильно отправлять сообщение от плагина к клиенту (серверный плагин). В функции PluginProcess расположен вызов функции через указатель (*CommFortProcess)(dwPluginID,20,aMessageToSend.c_str(),aMessageToSend.Length()) для отправки сообщения программе. Как правильно через неё послать сообщение? Я убирал коментарии и переменной aMessageToSend присваивал строку например aMessageToSend="test". Но ничего не происходит. Подскажите пожалуйста. Как правильно с этой функцией (для отправки сообщений) работать.

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

Добавлено: 11:20, 14.01.2009
Maxim Mirgorodsky
Необходимо просто ее вызывать с необходимыми параметрами (не забудьте указывать верный dwPluginID, полученный при инициализации).