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

Здесь обсуждаются технические аспекты создания дополнений.
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

Maxim Mirgorodsky,
Что может привести к

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

[21.09.2010 17:23:55] Ошибка при обработке программой сообщения от плагина "Mafia.cfplug" c ID=0. Плагин остановлен.
? Что нужно передать программе, чтобы вызвать такую ошибку?

anonim,
попробуйте так:

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

  
if Assigned(Form1) then
begin 
  if Assigned(Form1.sSkinmanager1) then
    Form1.sSkinmanager1.Active:=false;
  if Assigned(Form1.FilterGraph1) then
    FreeAndNil(Form1.FilterGraph1);
end;
FreeAndNil(Form3);
FreeAndNil(Form2);
FreeAndNil(Form1);
ZigZagkms
Вам лучше попробовать воспользоваться оператором try ... catch, чтобы понять причину ошибки.
Насколько я помню, к свойству Items нельзя обращаться, если у элемента ListBox нет компонента-родителя. Не особо силён в C++ :)
Последний раз редактировалось KGB 16:22, 21.09.2010, всего редактировалось 1 раз.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

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

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

KGB писал(а): попробуйте так:

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

  
if Assigned(Form1) then
begin 
  if Assigned(Form1.sSkinmanager1) then
    Form1.sSkinmanager1.Active:=false;
  if Assigned(Form1.FilterGraph1) then
    FreeAndNil(Form1.FilterGraph1);
end;
FreeAndNil(Form3);
FreeAndNil(Form2);
FreeAndNil(Form1);
Еще не понятно что такое FilterGraph1 если это компонент установленный на форму в дизайнере то его не надо освобождать вручную так, как при освобождении Form1 может тоже выскочить ошибка при доступе к уже уничтоженному объекту
ОреЛ
Сообщения: 376
Зарегистрирован: 11:18, 11.07.2008
Откуда: Ульяновск
Контактная информация:

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

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

Есть кто владеющий C# для импорта с C++ на C#?
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
Maxim Mirgorodsky
Администратор
Сообщения: 6871
Зарегистрирован: 09:56, 27.06.2005

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

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

KGB писал(а):Maxim Mirgorodsky,
Что может привести к

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

[21.09.2010 17:23:55] Ошибка при обработке программой сообщения от плагина "Mafia.cfplug" c ID=0. Плагин остановлен.
? Что нужно передать программе, чтобы вызвать такую ошибку?
Не должно быть такого, разве что в памяти какие-то ошибки. Это проявилось один раз?
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

Maxim Mirgorodsky писал(а):
KGB писал(а):Maxim Mirgorodsky,
Что может привести к

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

[21.09.2010 17:23:55] Ошибка при обработке программой сообщения от плагина "Mafia.cfplug" c ID=0. Плагин остановлен.
? Что нужно передать программе, чтобы вызвать такую ошибку?
Не должно быть такого, разве что в памяти какие-то ошибки. Это проявилось один раз?
У меня не проявлялось ни разу, иногда проявляется у пользователей, как я заметил, при нескольких действиях плагина подряд (закрытие всех открытых приватов, отправка большого количества приватов и т.п)
Аватара пользователя
sasha
Сообщения: 817
Зарегистрирован: 20:16, 27.07.2009
Откуда: Усть-Илимск

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

Сообщение sasha »

KGB писал(а):
Maxim Mirgorodsky писал(а):
KGB писал(а):Maxim Mirgorodsky,
Что может привести к

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

[21.09.2010 17:23:55] Ошибка при обработке программой сообщения от плагина "Mafia.cfplug" c ID=0. Плагин остановлен.
? Что нужно передать программе, чтобы вызвать такую ошибку?
Не должно быть такого, разве что в памяти какие-то ошибки. Это проявилось один раз?
У меня не проявлялось ни разу, иногда проявляется у пользователей, как я заметил, при нескольких действиях плагина подряд (закрытие всех открытых приватов, отправка большого количества приватов и т.п)
Лично у меня появлялось уже 3 раза!
Аватара пользователя
SV
Сообщения: 797
Зарегистрирован: 00:11, 06.09.2010
Откуда: Киров

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

Сообщение SV »

-=SJ=- писал(а):
KGB писал(а): попробуйте так:

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

  
if Assigned(Form1) then
begin 
  if Assigned(Form1.sSkinmanager1) then
    Form1.sSkinmanager1.Active:=false;
  if Assigned(Form1.FilterGraph1) then
    FreeAndNil(Form1.FilterGraph1);
end;
FreeAndNil(Form3);
FreeAndNil(Form2);
FreeAndNil(Form1);
Еще не понятно что такое FilterGraph1 если это компонент установленный на форму в дизайнере то его не надо освобождать вручную так, как при освобождении Form1 может тоже выскочить ошибка при доступе к уже уничтоженному объекту
Это компонент каторый не использует sSkinmanager,это компонент для воспроизведение мультимедийных файлов.
Аватара пользователя
SV
Сообщения: 797
Зарегистрирован: 00:11, 06.09.2010
Откуда: Киров

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

Сообщение SV »

KGB писал(а):
anonim,
попробуйте так:

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

  
if Assigned(Form1) then
begin 
  if Assigned(Form1.sSkinmanager1) then
    Form1.sSkinmanager1.Active:=false;
  if Assigned(Form1.FilterGraph1) then
    FreeAndNil(Form1.FilterGraph1);
end;
FreeAndNil(Form3);
FreeAndNil(Form2);
FreeAndNil(Form1);
Не помогло,неподскажите ещё варианты?
Аватара пользователя
dr1v3
Сообщения: 23
Зарегистрирован: 00:38, 18.09.2010

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

Сообщение dr1v3 »

Поковырял тут api для серверного плагина и возникло два вопроса: как обрабатывать приглашения в каналы и как зайти в "закрытый" канал, т.е. тот, куда можно только пригласить? И ещё: когда пытаюсь зайти в канал по 1026, не пускает с кодом 1091.1 P.S. Не пускает в уже созданные каналы, а создавать и заходить получается.

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

var aDataToSend : AnsiString;
    uText : String;
begin
aDataToSend :=fTextToAnsiString(frm_Settings.lbledt_nick.text)+ 
fIntegerToAnsiString(1)+
fTextToAnsiString(frm_Settings.edt1.text)+
fIntegerToAnsiString(0); 
CommFortProcess(dwPluginID, 1026, PAnsiChar(aDataToSend), Length(aDataToSend));
end;
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

Не помогло,неподскажите ещё варианты?
Как уже сказал -=SJ=-, попробуйте вообще не освобождать FilterGraph1.
Поковырял тут api для серверного плагина и возникло два вопроса: как обрабатывать приглашения в каналы и как зайти в "закрытый" канал, т.е. тот, куда можно только пригласить?
1. Пока никак;
2. Дать плагину права (кажется, на модерирование канала), пока по-другому, кажется, тоже никак :)
Аватара пользователя
dr1v3
Сообщения: 23
Зарегистрирован: 00:38, 18.09.2010

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

Сообщение dr1v3 »

KGB писал(а): 2. Дать плагину права (кажется, на модерирование канала), пока по-другому, кажется, тоже никак :)
И все же не пойму, почему плагин не заходит в каналы... Права пробовал давать, не помогло
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

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

Maxim Mirgorodsky писал(а):
@serg@ писал(а):Есть предположение о некорректном распознании режима для ID=67.
Если кто может перепроверьте
Посмотрели - вроде нет проблем.

Опишите подробнее что именно не получается с режимом.

Обращаем внимание, что если канал уже создан, то производится только вход, а значение режима игнорируется.
Создаю каналы (имена флудовские. чтоб точно до этого такого канала не было создано):
выавыававыавы=0
авпавпаввыав=1
цукуцкуцкуцкуц=2
мсимсимимимс=3
прилагаю скрины
1.jpg
(63.29 КБ) 52 скачивания
2.jpg
(65.32 КБ) 50 скачиваний
4.jpg
(63.73 КБ) 50 скачиваний
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

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

3.jpg
(63.73 КБ) 49 скачиваний
клиент 5.00e, вручную создаются каналы, отображаемые в списке
код

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

    AnsiString s;
    int offset=0;
    s.SetLength(8+LabeledEdit2->Text.Length()*2);
    fWriteInteger(s.c_str(),&offset,RadioGroup2->ItemIndex);
    fWriteText(s.c_str(),&offset,LabeledEdit2->Text);
    Memo4->Lines->Add(LabeledEdit2->Text+"="+UnicodeString(RadioGroup2->ItemIndex));
    events(67,s);
и

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

bool events (DWORD dwID, AnsiString s)
{
    (*CommFortProcess)(dwPluginID,dwID,s.c_str(),s.Length());
}
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

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

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

Maxim Mirgorodsky, а я так вижу для плагинов отдельные потоки не выделяются? То есть если плагин зависнет, то и сервак вместе с ним...
Аватара пользователя
dr1v3
Сообщения: 23
Зарегистрирован: 00:38, 18.09.2010

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

Сообщение dr1v3 »

Эээ спрошу ещё раз: только у меня виртуальный юзер из серверного плагина не может заходить на указанные каналы?
Закрыто