На C++. Я понял суть, что Объект должен быть Application. Спасибо за помощь.cilvay писал(а):На чем пишешь? на делфи?
В PluginStart пишешь:Теперь внимание на PluginStopКод: Выделить всё
Form1 := TForm1.Create(Application); Form1.Show;
Все. Должно работать сколько угодно и без ошибок.Код: Выделить всё
form1.Close; form1.Free;
Кстати если проверять на windows vista, 7 то ошибка будет гораздо подробнее описана, даже будет показан модуль с этой ошибкой
Архив: Технология создания плагинов
Re: Технология создания плагинов
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Технология создания плагинов
До этого как-то наталкивался, сейчас найти не получилось, Free() вызывает набор функций, разве Close() он сам не вызывает, или скорее всего я ошибаюсь?cilvay писал(а):На чем пишешь? на делфи?
В PluginStart пишешь:Теперь внимание на PluginStopКод: Выделить всё
Form1 := TForm1.Create(Application); Form1.Show;
Все. Должно работать сколько угодно и без ошибок.Код: Выделить всё
form1.Close; form1.Free;
Кстати если проверять на windows vista, 7 то ошибка будет гораздо подробнее описана, даже будет показан модуль с этой ошибкой
впринципе на с++ тоже самое нужно только синтаксис создания другой.
Код: Выделить всё
Application->CreateForm(__classid(TForm1), &Form1);
-
- Сообщения: 659
- Зарегистрирован: 08:54, 13.07.2010
- Откуда: Чебоксары, Россия
- Контактная информация:
Re: Технология создания плагинов
В деструкторе проверяется, была ли создана форма? Сервер подвисает, когда включается-выключается плагин без формы?ОреЛ писал(а): форма создается в отдельном классе, а при вызове функции PluginStop вызывается деструктор этого класса
и, когда при закрытии (в деструкторе) написано Form1->Free() , то, когда два раза подряд включается-выключается плагин, на 3-ий раз при включении подвисает сервер
Re: Технология создания плагинов
В конструкторе создается форма.KGB писал(а):В деструкторе проверяется, была ли создана форма? Сервер подвисает, когда включается-выключается плагин без формы?
В деструкторе проверки на наличие формы нет.
Когда 3-ий раз нажимал на кнопку Запустить, то подвисал сервер с нажатой кнопкой Запустить.
Если так создавать форму, то при выключении плагина сервер вылетает полностью. Просто закрывается.@serg@ писал(а): До этого как-то наталкивался, сейчас найти не получилось, Free() вызывает набор функций, разве Close() он сам не вызывает, или скорее всего я ошибаюсь?
впринципе на с++ тоже самое нужно только синтаксис создания другой.Код: Выделить всё
Application->CreateForm(__classid(TForm1), &Form1);
В принципе проблема решена, как уже ранее подсказали мне:
создание формы
Form1 = new TForm1(Application);
и высвобождение формы
Form1->Close();
Form1->Free();
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
-
- Сообщения: 659
- Зарегистрирован: 08:54, 13.07.2010
- Откуда: Чебоксары, Россия
- Контактная информация:
Re: Технология создания плагинов
Т.е. деструктор не может быть вызван, когда формы нет в памяти? Тогда вопрос снят, неправильно понял)ОреЛ писал(а): В конструкторе создает форма.
В деструкторе проверки на наличие формы нет.
Когда 3-ий раз нажимал на кнопку Запустить, то подвисал сервер с нажатой кнопкой Запустить.
Re: Технология создания плагинов
Не спорю, у самого есть ошибка при завершении работы плагина, правда она ни к чему не приводит, сейчас туго вспоминается, возможно при моём варианте создания формы, метод Close() какраз и приводил к остановке базовой программы поэтому у себя я и не нахожу его. Как-нибудь на досуге попробую по твоему методу создать форму.ОреЛ писал(а):В конструкторе создается форма.KGB писал(а):В деструкторе проверяется, была ли создана форма? Сервер подвисает, когда включается-выключается плагин без формы?ОреЛ писал(а): форма создается в отдельном классе, а при вызове функции PluginStop вызывается деструктор этого класса
и, когда при закрытии (в деструкторе) написано Form1->Free() , то, когда два раза подряд включается-выключается плагин, на 3-ий раз при включении подвисает сервер
В деструкторе проверки на наличие формы нет.
Когда 3-ий раз нажимал на кнопку Запустить, то подвисал сервер с нажатой кнопкой Запустить.
Если так создавать форму, то при выключении плагина сервер вылетает полностью. Просто закрывается.@serg@ писал(а): До этого как-то наталкивался, сейчас найти не получилось, Free() вызывает набор функций, разве Close() он сам не вызывает, или скорее всего я ошибаюсь?
впринципе на с++ тоже самое нужно только синтаксис создания другой.Код: Выделить всё
Application->CreateForm(__classid(TForm1), &Form1);
В принципе проблема решена, как уже ранее подсказали мне:
создание формы
Form1 = new TForm1(Application);
и высвобождение формы
Form1->Close();
Form1->Free();
Re: Технология создания плагинов
cilvay писал(а):На чем пишешь? на делфи?
В PluginStart пишешь:Теперь внимание на PluginStopКод: Выделить всё
Form1 := TForm1.Create(Application); Form1.Show;
Все. Должно работать сколько угодно и без ошибок.Код: Выделить всё
form1.Close; form1.Free;
Кстати если проверять на windows vista, 7 то ошибка будет гораздо подробнее описана, даже будет показан модуль с этой ошибкой
form1:=tform1.Create(nil); //cоздать
form1.Destroy; //удалить
Дополнения для CommFort
Адрес чата: chat.telered.ru
.
Адрес чата: chat.telered.ru
.
Re: Технология создания плагинов
Да и так и так будет нормально, без разницы
Re: Технология создания плагинов
Уважаемые разработчики, нельзя ли сделать чтобы код, выполняющийся в функции PluginProcess был независим от чата и комфорт не ждал пока он выполниться. Если я туда запихну sleep(20000) то чат будет 20 секунд висеть. А как реализовать это без использования многопоточности?
Re: Технология создания плагинов
Перепроверил твой метод, в нём при создании объекта Form сразу вылетает ошибка памяти, может ещё нужны какие-либо манипуляции с формой, проверять нет времени.ОреЛ писал(а):Если так создавать форму, то при выключении плагина сервер вылетает полностью. Просто закрывается.
В принципе проблема решена, как уже ранее подсказали мне:
создание формы
Form1 = new TForm1(Application);
и высвобождение формы
Form1->Close();
Form1->Free();
По моему методу: у меня полностью запрещён метод Close(), именно он уничтожает родительский объект Application, выключение плагина идёт вызовом события 2100, который как раз и вызывает функцию в котором форма со всеми её компонентами уничтожается методом Free().
Re: Технология создания плагинов
Что нужно для написания плагина?
Re: Технология создания плагинов
1) ЖеланиеHunter писал(а):Что нужно для написания плагина?
2) Знание одного из языков программирования (желательно С++ или Delphi)
3) Наличие установленное IDE на компьютере
4) Можно начать с примеров, изложенных в этой теме, и потом продолжить разрабатывать свой плагин
Желаю удачи!
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Технология создания плагинов
3) Наличие установленное IDE на компьютере
А можно поподробнее? Какие программы нужны?
А можно поподробнее? Какие программы нужны?
Re: Технология создания плагинов
Могу привести в пример IDE 2010 года.Hunter писал(а):3) Наличие установленное IDE на компьютере
А можно поподробнее? Какие программы нужны?
Microsoft Visual C++ в комплекте с Microsoft Visual Studio 2010
Embarcadero RAD Studio 2010 включает в себя C++ Builder 2010 и Delphi 2010
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Технология создания плагинов
СпасибоОреЛ писал(а):Могу привести в пример IDE 2010 года.
Microsoft Visual C++ в комплекте с Microsoft Visual Studio 2010
Embarcadero RAD Studio 2010 включает в себя C++ Builder 2010 и Delphi 2010