Страница 10 из 26
Re: Технология создания плагинов
Добавлено: 11:36, 24.10.2010
$teelR@t
cilvay писал(а):Код: Выделить всё
Подключение к каналу виртуального пользователя
ID: 1062
Блок данных: текст(имя виртуального пользователя) + текст(канал) + текст(тема канала) + текст(приветствие канала)
И это же самое значит
Код: Выделить всё
ID компьютера пользователя
ID: 1062
Блок данных (исходящий): текст(имя пользователя)
Блок данных (входящий): текст(ID компьютера)
Если пользователь не зарегистрирован, то вместо ID компьютера во входящий блок данных будет записана пустая строка.
Можете дать какие нить комментарии...
Ну так это же 2 разные функции. Первая функция - это прием сообщений PluginProcess. А вторая это Получение данных от программы - CommFortGetData.
Re: Технология создания плагинов
Добавлено: 11:38, 24.10.2010
Cilvay
Так, до меня дошло..
Re: Технология создания плагинов
Добавлено: 14:04, 24.10.2010
@serg@
cilvay писал(а):Код: Выделить всё
Подключение к каналу виртуального пользователя
ID: 1062
Блок данных: текст(имя виртуального пользователя) + текст(канал) + текст(тема канала) + текст(приветствие канала)
И это же самое значит
Код: Выделить всё
ID компьютера пользователя
ID: 1062
Блок данных (исходящий): текст(имя пользователя)
Блок данных (входящий): текст(ID компьютера)
Если пользователь не зарегистрирован, то вместо ID компьютера во входящий блок данных будет записана пустая строка.
Можете дать какие нить комментарии...
всё норм, только сложно не запутаться.
Re: Технология создания плагинов
Добавлено: 14:13, 24.10.2010
Cilvay
Не получается забанить пользователя
Код: Выделить всё
aDataToSend := fTextToAnsiString(form1.Edit1.text)+ //имя виртуального пользователя
fIntegerToAnsiString(3)+ //тип. По имени пользователя
fTextToAnsiString(uSenderLogin)+ //имя жертвы
fIntegerToAnsiString(0)+//тип. Отрубаем его от сервера
fIntegerToAnsiString(form1.SpinEdit1.Value)+ //срок. Вот тут может косяк, на срок подается обычное число типа integer. к примеру в поле введено значение 7
fTextToAnsiString('текст')+ //причина
fIntegerToAnsiString(1); //тип анонимности
CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend));
Не работает никак. В чем проблема?
Re: Технология создания плагинов
Добавлено: 14:21, 24.10.2010
KGB
cilvay писал(а):Не получается забанить пользователя
Код: Выделить всё
fIntegerToAnsiString(form1.SpinEdit1.Value)+ //срок. Вот тут может косяк, на срок подается обычное число типа integer. к примеру в поле введено значение 7
Не работает никак. В чем проблема?
Нужно использовать DateTime (Double)
Re: Технология создания плагинов
Добавлено: 14:29, 24.10.2010
Cilvay
Можно подробнее. Надо указывать часы, дни или как?
Re: Технология создания плагинов
Добавлено: 14:47, 24.10.2010
KGB
cilvay писал(а):Можно подробнее. Надо указывать часы, дни или как?
DateTime=Double (8 байт), где время указывается в днях. например, 1.0 - 1 день, а 0.33 - приблизительно 8 часов. Но можно использовать тип
TDateTime.
Re: Технология создания плагинов
Добавлено: 14:59, 24.10.2010
Cilvay
Можно пример? Допустим как из числа 1 получить 1.0... И уже в нужном формате) заранее спасибо
Re: Технология создания плагинов
Добавлено: 15:11, 24.10.2010
KGB
cilvay писал(а):Можно пример? Допустим как из числа 1 получить 1.0... И уже в нужном формате) заранее спасибо
делфи автоматически приведет тип при присваивании:
Код: Выделить всё
var
I: Integer;
D: Double;
begin
I:=1;
D:=I; // D = 1.0
end;
Re: Технология создания плагинов
Добавлено: 15:27, 24.10.2010
Cilvay
Спасибо. Но как теперь передать на CommFortProcess тип DOUBLE
Код: Выделить всё
D:=form1.SpinEdit1.Value;
aDataToSend := fTextToAnsiString(form1.Edit1.text)+ //имя виртуального пользователя
fIntegerToAnsiString(3)+ //тип важности
fTextToAnsiString(uSenderLogin)+
fIntegerToAnsiString(0)+
fIntegerToAnsiString(D)+ //Вот тут компилятор стопорится
fTextToAnsiString('Причина')+
fIntegerToAnsiString(1);
// fTextToAnsiString(uText); //сообщение
CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend));
Код: Выделить всё
[DCC Error] main.pas(403): E2010 Incompatible types: 'WideString' and 'Double'
Re: Технология создания плагинов
Добавлено: 15:30, 24.10.2010
KGB
Думаю, что понадобится функция
Код: Выделить всё
function fDoubleToAnsiString(dValue : Double) : AnsiString; //вспомогательная функция для упрощения работы с данными
begin
//функция предназначена для ознакомительных целей,
//не рекомендуется для реального применения,
//так как при ее использовании проявляется избыточное копирование данных
SetLength(Result, 8);
CopyMemory(@Result[1], @dValue, 8);
end;
Re: Технология создания плагинов
Добавлено: 15:32, 24.10.2010
Cilvay
Нашел решение: FloatToStr
Re: Технология создания плагинов
Добавлено: 15:35, 24.10.2010
Cilvay
Большое спасибо)
Re: Технология создания плагинов
Добавлено: 19:51, 24.10.2010
@serg@
Максим, хотел бы уточнить насчёт CommFortProcess ID 51 (Отправить изображение в общий канал). Возникло подозрение, что у вас есть небольшая утечка памяти на ней. Сначала думал, что утечка была у меня, но после долгих мучений закомментировал функцию передачи этого изображения (CommFortProcess), оставив всю остальную обработку данных и потеря пропала. Даже если учесть, что изображение в клиенте тоже занимает память, то каждое обходится более мегобайта
И параллельно несколько вопросов:
1) какой максимальный размер (в байтах) изображения, которые может принь клиент?
2) какой максимальный размер для текстовых сообщений?
3) нет-ли ошибки в "число(формат изображения)" для данного ID, оно осталось как было в 4 и 3 версии?
Re: Технология создания плагинов
Добавлено: 10:16, 25.10.2010
Artur
Очень не хватает приема событий как наложение/снятие ограничения(серверному плагину)

. Сравнивать весь список довольно громоздко... Есть ли в планах добавление такой функции?
