Страница 39 из 42
Re: Технология создания плагинов и программ-дополнений
Добавлено: 18:51, 09.06.2010
Maxim Mirgorodsky
Это событие возникает в случае если пользователь переключил учетную запись на другую.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:15, 21.06.2010
$teelR@t
Вот мне очень интересно, база плагина для C++ Builder есть (нул плагин), а вот как в нём работать с указателем на массив BYTE * bMessage не написано, может кто-нить объяснит?
Re: Технология создания плагинов и программ-дополнений
Добавлено: 17:26, 22.06.2010
DIGGER
$teelR@t писал(а):Вот мне очень интересно, база плагина для C++ Builder есть (нул плагин), а вот как в нём работать с указателем на массив BYTE * bMessage не написано, может кто-нить объяснит?
Обычный указатель на обычную память! Работать как с обычным указателем на массив байт.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:34, 27.06.2010
joub
$teelR@t писал(а):Вот мне очень интересно, база плагина для C++ Builder есть (нул плагин), а вот как в нём работать с указателем на массив BYTE * bMessage не написано, может кто-нить объяснит?
Код: Выделить всё
BYTE __stdcall PluginProcess(DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength)
{
DWORD Pe1,Pe2,Pe3,Pe4,Pe5,Pe6; // тут лежат временные переменные
char us[255],Text[5000];
// (Новое объявление 21)
if(dwMessageID == 21)
{
// Разбор по косточкам
memcpy(&Pe1,bMessage,4); // уникальный идентификатор объявления
memcpy(&Pe2,bMessage+4,4); // Num User
memset(&us,0,255);
memcpy(&us,bMessage+8,Pe2); // Имя пользователя
memcpy(&Pe3,bMessage+8+Pe2,4); // Num IP
//memcpy(&ip,bMessage+12+Pe2,Pe3); // IP-адрес пользователя
memcpy(&Pe4,bMessage+Pe2+Pe3+12,4); // Num Data
//memcpy(&Date,bMessage+Pe2+Pe3+16,Pe4); // дата и время публикации
memcpy(&Pe5,bMessage+Pe2+Pe3+Pe4+16,4); // Num Text
memset(&Text,0,5000);
memcpy(&Text,bMessage+Pe2+Pe3+Pe4+20,Pe5); //текст(текст объявления)
.....
ps: коменты сохранены в без редактирования...)
Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:44, 27.06.2010
$teelR@t
joub, спасибо за ответ, но я уже сделал более оптимизированное извлечение данных из потока через указатели.
Если Вы реально используете этот код, то лучше сделать размерность массива us[40], потому что имя пользователя не может быть больше 40 символов, а меньшее выделение памяти оптимизирует работу программы.
Re: Технология создания плагинов и программ-дополнений
Добавлено: 01:20, 28.06.2010
joub
$teelR@t писал(а):joub, спасибо за ответ, но я уже сделал более оптимизированное извлечение данных из потока через указатели.
Если Вы реально используете этот код, то лучше сделать размерность массива us[40], потому что имя пользователя не может быть больше 40 символов, а меньшее выделение памяти оптимизирует работу программы.
Спасибо, учту
, можно ваш пример в студию ?
А моя заморочка в том - что я использую самаписный класс для дальнейшей обработки, а при передаче текстового поля - не факт что строка будет заканчиваться на ноль... - лишний мусор мне там никчему )
вот кто бы еще подсказал - как при инициализации класса динамически выделять ему память(через конструктор/диструктор) - притом что переменная класса объявлена глобально...
Re: Технология создания плагинов и программ-дополнений
Добавлено: 13:38, 28.06.2010
$teelR@t
joub писал(а):Спасибо, учту
, можно ваш пример в студию ?
Извините, но пока что нет, он ещё не доработан.
joub писал(а):А моя заморочка в том - что я использую самаписный класс для дальнейшей обработки, а при передаче текстового поля - не факт что строка будет заканчиваться на ноль... - лишний мусор мне там никчему )
Дык я тоже самописный класс использую
. Ну так строка и так не нулём заканчивается, поэтому ручками дописываем к ней 0
.
P.S. Шутки ради. При инициализации плагина есть переменная IsFemale (в переводе с инглиша "Девушка?") логического типа (true - да, false - нет), а эквивалентом этим словам являются true - 1, false - 0. Следовательно получается что если пользователь - девушка, то IsFemale == 1 что заведомо портит всё представление о женщинах и мужчинах(женщина должна равняться 0-ю, а мужчина 1-це) кто догадался о чём я тот молодесь)))...
Так что предлагаю переименовать переменную в нул плагине в IsMale и сделать соотв. изменения в серваке).
Re: Технология создания плагинов и программ-дополнений
Добавлено: 04:44, 29.06.2010
DIGGER
$teelR@t писал(а):… поэтому ручками дописываем к ней 0
Ну-ну
Вы же затираете себе же память
(А "в конце" памяти можно ещё нарваться 0x0000000C, при чём этот баг может быть плавающим)
Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:01, 29.06.2010
$teelR@t
DIGGER писал(а):Ну-ну
Вы же затираете себе же память
(А "в конце" памяти можно ещё нарваться 0x0000000C, при чём этот баг может быть плавающим)
Да ладно вам... ничего не затирается. Под указатель выделяется память размером с длинну текста + 1 символ. И вот этот 1 символ последний присваивается нулю
Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:40, 29.06.2010
$teelR@t
Странное дело, никто не подскажет? Делал проект плагина для сервака под Delphi - под wine на линухе всё отлично запускалось. Но на C++ Builder-е как только кидаю плагин в соотв. папку сервера, то в списке плагинов в серверной проге комфорта этот плагин есть, но как только я его выбираю кнопки "О плагине" и "Настроить" остаются не активными, а при запуске плагина пишется "Ошибка при запуске плагина "test". Плагин остановлен", хотя прошлый мой проект на Delphi всё отлично работало и кнопки активные были. Попробовал на своей машине запустить(Win 7 x64) - всё тоже отлично работает, попробовал на виртуалке запустить (WinXP SP2) так само всё отлично запустилось.
Странно что проект под Delphi то запустился... Ни у кого нет никаких идей по этому поводу?
Re: Технология создания плагинов и программ-дополнений
Добавлено: 13:10, 29.06.2010
$teelR@t
Проблема решена
Re: Технология создания плагинов и программ-дополнений
Добавлено: 15:33, 29.06.2010
DIGGER
$teelR@t писал(а):Да ладно вам... ничего не затирается. Под указатель выделяется память размером с длинну текста + 1 символ. И вот этот 1 символ последний присваивается нулю
Из доки читаем:
текст(описание)
Текстовые данные. Представляют из себя число(длина текста в байтах) + сам текст.
Где тут +1 символ
Re: Технология создания плагинов и программ-дополнений
Добавлено: 15:36, 29.06.2010
$teelR@t
DIGGER писал(а):текст(описание)
Текстовые данные. Представляют из себя число(длина текста в байтах) + сам текст.
Где тут +1 символ
Эммм, а кто говорит, что я юзаю тот же указатель, который мне передаёт сервер? Я создаю новый указатель, размечаю под него память, записываю в него текст с указателя, который мне передал сервак и добавляю в конец 0
Re: Технология создания плагинов и программ-дополнений
Добавлено: 16:22, 29.06.2010
DIGGER
В таком случае Вы (как и
joub) тратите время процессора в пустую
Re: Технология создания плагинов и программ-дополнений
Добавлено: 16:28, 29.06.2010
$teelR@t
Ну как сказать... Во-первых память более оптимизированно юзается, а во-вторых сравнивать собственно не с чем... Были ли бы ещё какие-либо примеры кодов, можно было бы сравнить и обсудить какой из вариантов тратит процессорное время впустую. А так как сравнивать не с чем, то процессорное время тратится так как надо данным примерам кодов.