Re: Технология создания плагинов
Добавлено: 18:28, 28.09.2010
Ну если жалоб больше нет, то скорее всего это только у меня что-то не то.
Ответил ЛС (чтобы не загромождать эту тему разбором проблемы).KGB писал(а):http://commfort.com/ru/forum/viewtopic. ... 912#p45912
Я так понимаю, это не ошибка плагина, а он поймал исключение клиента?
Код: Выделить всё
First-chance exception at 0x0046ecee in CommFort_server.exe: 0xC0000005: Access violation reading location 0x00000404.
Код: Выделить всё
[01.10.2010 20:40:07] Application error: "Access violation at address 057E5F26 in module 'Plugin_Player.dll.cfplug'. Read of address 05AA45EC"
Код: Выделить всё
FreeAndNil(MainForm.DSVideoWindowEx);
для этого есть событие 2100, однако в последнее время у меня не получается с ним работать, выдаёт ошибку в события, но я так предполагаю, что у меня где-то утечка памяти, и при закрытии я её не подчищаю. Перепроверь у себя вроде вначале я этим событием нормально останавливал плагин.anonim писал(а):Суть такова когда я останавливаю плагин ошибка вылетает в канал события:Я останаливаю так:Код: Выделить всё
[01.10.2010 20:40:07] Application error: "Access violation at address 057E5F26 in module 'Plugin_Player.dll.cfplug'. Read of address 05AA45EC"
Когда закрываешь коммфорт то всё норм.Код: Выделить всё
FreeAndNil(MainForm.DSVideoWindowEx);
Что не так?Подскажите как его выгрузить?
1) Скорее всего система защиты проявляет себя.kkk писал(а):Максим, опишите как решать проблему. Не могу который день заставить работать отладку при работе с плагинами(с 4й версией проблем небыло). Как я понял, валится на стороне сервера. (vc++)p.s. возможно ли создать версию чат-сервера, лимитированную в 2-3 соединения без ограничений по времени?Код: Выделить всё
First-chance exception at 0x0046ecee in CommFort_server.exe: 0xC0000005: Access violation reading location 0x00000404.
Ответили в той теме. К сожалению, ничего не получится реализовать. Отказались от запросов к серверу за данными по нескольким причинам:HukpoFuJl писал(а):Очень прошу разработчиков обратить внимание на пожелание, изложил всё максимально подробно, если реализуете - поставлю вам памятник при жизни
Мне кажется, что блок данных сейчас получается такой:Блок данных (входящий): число(количество) + (текст(название канала) + число(количество пользователей в канале) + текст(тема канала))*количество
число(количество) + (текст(название канала))*количество
Код: Выделить всё
String name = "nick";
DWORD size = (*CommFortGetData)(dwPluginID, 1061, NULL, NULL, name.t_str() , name.Length()); //пробывал и вручную писать - ..."nick", 4...
Может быть неверная длина буфера? Не нужно разве умножить длину строки на 2?$teelR@t писал(а):Блин, это потеря потерь... Походу запрос данных с id 1060-1062 не пашет... Запрашиваю через CommFortGetData размер ip, id иля пароля, чтобы выделить под них память, а получаю "Integer overflow" в ответ...Вот сразу после этого и вылетает ошибкаКод: Выделить всё
String name = "nick"; DWORD size = (*CommFortGetData)(dwPluginID, 1061, NULL, NULL, name.t_str() , name.Length()); //пробывал и вручную писать - ..."nick", 4...
.
Maxim Mirgorodsky, проверьте пожалуйста или подскажите что делаю не так.
Блин, банально забыл...))) Спасибо что откликнулсяKGB писал(а):Может быть неверная длина буфера? Не нужно разве умножить длину строки на 2?
UPD: И вообще, формат передаваемой программе строки должен быть таким: длина(4 байта)+сама строка.
Т.е. в примере:
4(4 байта)+"nick"(8 байт). Итого, размер буфера - 12.