Исходник плагина с реализованными элементарными действиями
Moderators: Korney San, marcipan
Исходник плагина с реализованными элементарными действиями
Здравствуйте! Я столкнулся с проблемой. Плагинов никогда не писал, но за свою жизнь написал не одну программу средней сложности.
Скачал тестовый исходник, посмотрел, но ничего толком не понял.
Где там писать СВОЙ код? Как вызвать функцию DoAction с формы настроек?
В общем прошу выложить исходник тестового плагина с уже реализованными элементарными действиями. Например добавлением ссылки на закачку нажатием на кнопку на форме настроек плагина.
Выполнение DoAction с любым действием по таймеру (каждую минуту, например).
Там же на форме должны быть Memo и кнопка, которая заносит в Memo список всех закачек (GetDownloadIDsList).
Буду очень признателен.
Скачал тестовый исходник, посмотрел, но ничего толком не понял.
Где там писать СВОЙ код? Как вызвать функцию DoAction с формы настроек?
В общем прошу выложить исходник тестового плагина с уже реализованными элементарными действиями. Например добавлением ссылки на закачку нажатием на кнопку на форме настроек плагина.
Выполнение DoAction с любым действием по таймеру (каждую минуту, например).
Там же на форме должны быть Memo и кнопка, которая заносит в Memo список всех закачек (GetDownloadIDsList).
Буду очень признателен.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Re: Исходник плагина с реализованными элементарными действия
Всё познаётся в сравнении...Lancaster wrote:Здравствуйте! Я столкнулся с проблемой. Плагинов никогда не писал, но за свою жизнь написал не одну программу средней сложности.
Скачал тестовый исходник, посмотрел, но ничего толком не понял.
Везде.Lancaster wrote:Где там писать СВОЙ код?
Сделать процедуру чтения настроек и прописать её в конце тела PluginInit.
Сделать вызов формы настроек в процедуре PluginConfigure вместо того, что там написано. Реализовать обмен настройками плагина и формы.
Сделать процедуру сохранения настроек и прописать её на закрытие формы и в начале BeforeUnload.
Написать необходимую обработку различных событий в теле EventRaised (можно с выносом в отдельные процедуры).
Написать процедуру, в которой вызывается DoAction с необходимыми параметрами. Сделать в форме переменную типа "процедура". После создания формы до её отображения прицепить процедуру на переменную.Lancaster wrote: Как вызвать функцию DoAction с формы настроек?
Это ж целый плагин писать надо!..Lancaster wrote: В общем прошу выложить исходник тестового плагина с уже реализованными элементарными действиями. Например добавлением ссылки на закачку нажатием на кнопку на форме настроек плагина.
Выполнение DoAction с любым действием по таймеру (каждую минуту, например).
Делается тип "процедура с параметром TStrings"Lancaster wrote: Там же на форме должны быть Memo и кнопка, которая заносит в Memo список всех закачек (GetDownloadIDsList).
В плагине пишется процедура такого типа, делающая из списка всех закачек TStrings, а в форме делается переменная этого типа, на которую вешается процедура, и другая, которая вызывает процедуру из плагина и передаёт результат в Memo.
Это если не разворачивать строку с ID на форме.
В какую ещё сторону пнуть?Lancaster wrote:Буду очень признателен.
P.S. При написании ответа использовались мозги, учебник "Turbo Pascal" и справка DRKB.
P.P.S. Натолкнул на интересную мысль - написать враппер процедуры DoAction для формы настроек... Типа чтобы можно было выполнять с формы не какие-то, а все доступные в DoAction команды...
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Вы знаете, это конечно очень хорошо, что Вы такой умный, но то, что Вы тут написали, по мне так чистая демагогия. Если бы я хотел узнать теорию я бы не создавал темы с таким названием. Вы тут очень много понаписали, а вот чтобы добавить в тестовый плагин пару элементарных действий, чтобы не такие умные люди как Вы могли наглядно разобраться, так это ж ЦЕЛЫЙ плагин писать надо! Учебники я в колледже читал, сейчас мне вполне хватает наглядного примера. Всегда так делал и никогда проблем с этим не было. Так что прошу Вас умничать в другом месте, а в мою тему отвечать только по делу.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Упаси бог от демагогии!Lancaster wrote:Вы знаете, это конечно очень хорошо, что Вы такой умный, но то, что Вы тут написали, по мне так чистая демагогия.
Просто вопрос, заданный на форуме, предполагает, что человек в поисках ответа на него уже отбил лоб обо все возможные стены...
В противном случае это попрошайничество, как в переходах: "Подайте бедному несчастному не хотящему работать..."
Первое.Lancaster wrote: Если бы я хотел узнать теорию я бы не создавал темы с таким названием. Вы тут очень много понаписали, а вот чтобы добавить в тестовый плагин пару элементарных действий, чтобы не такие умные люди как Вы могли наглядно разобраться, так это ж ЦЕЛЫЙ плагин писать надо!
То, что я написал, описывает АЛГОРИТМ реализации необходимого. Программисту остаётся сесть и написать код, готорый будет реализовывать этот алгоритм.
Второе.
Я НЕ разработчик DM, НЕ разрабатывал пример плагина, НЕ обучался на программиста - у меня другое образование. Два года назад я сменил FlashGet на DM чисто из-за того, что у DM есть возможность писать плагины. Результаты двух лет можно найти на форуме. Я разбирался во всём сам, по учебникам и доступным в интернете справочникам, и лишь в редких случаях обращался за помощью сюда, на форум - когда ни учебник, ни справочник не могли дать мне ответа. И он, как обычно, оказывался совсем рядом...
А ваши слова "...но за свою жизнь написал не одну программу средней сложности..." смотрятся на фоне ваших вопросов весьма странно...
Азы программирования - разбивать задачу на подзадачи до тех пор, пока подзадачу можно будет реализовать. Ваше "элементарное" действие "..добавить ссылки на закачку нажатием на кнопку на форме настроек..." сразу рассыпается на минимум три: 1) процедура добавления закачки; 2) привязка процедуры к форме 3) запуск привязанной процедуры на форме. Вы пробовали это СДЕЛАТЬ? У вас получилось? Или вы сразу СПРАШИВАТЬ начали?Lancaster wrote: Учебники я в колледже читал, сейчас мне вполне хватает наглядного примера. Всегда так делал и никогда проблем с этим не было. Так что прошу Вас умничать в другом месте, а в мою тему отвечать только по делу.
Некий наглядный пример (по учебнику):
Code: Select all
unit dmtest_pluginImpl;
interface
type TActFunc = function ActionFromForm(action: WideString; parameters: WideString): WideString; stdcall;
type
TDMTestPlugIn = class(TInterfacedObject, IDMPlugIn)
private
myIDmInterface: IDmInterface;
function DoActionAnywhere(action: WideString; parameters: WideString): WideString; stdcall;
...
end;
implementation
uses ConfigForm;
function TDMTestPlugIn.DoActionAnywhere(action: WideString; parameters: WideString): WideString; stdcall;
begin
Result:=myIDmInterface.DoAction(action, parameters);
end;
procedure TDMTestPlugIn.PluginConfigure(params: WideString);
var
CF: TConfigForm;
begin
CF:=TConfigForm.Create(nil);
CF.DoFunction:=DoActionAnywhere;
...
if CF.ShowModal = mrOK then
begin
end;
...
CF.Free;
end;
Code: Select all
unit ConfigForm;
uses dmtest_pluginImpl;
type
TConfigForm = class(TForm)
...
DoFunction: TActFunc;
...
end;
procedure TConfigForm.Button1Click(Sender: TObject);
begin
...
if Assigned(DoFunction) then
DoFunction(SomeAction, SomeParameters);
...
end;
Если вы действительно "написали не одну программу", вам этого хватит. Если не хватит... спрашивайте дальше.
Просто вопрос, поставленный в вашим ключе, так и подмывает ответить "RTFM!"...
Я понимаю, что шаблонами пользоваться проще, но на все случаи жизни шаблон не создашь.
P.S. Если ничего не получается - прочтите наконец документацию!
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Я дико извиняюсь. Замучила работа. Сорвался. Больше не повторится... надеюсь.marcipan wrote:Уважаемые, будет спор с переходом на личность - удалю весь пост
Хотя по ходу код-то есть!..
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Кто предполагает? Вы предполагаете? Я вот например, совсем другое предполагаю. Вы в каком веке живете? Вы считаете, что я должен был начитаться книжек перед тем, как сюда писать? Давайте тогда еще на информационных ресурсах, где такие книги можно скачать напишем, мол перед тем, как качать вы все библиотеки и магазины в городе обошли?Упаси бог от демагогии!
Просто вопрос, заданный на форуме, предполагает, что человек в поисках ответа на него уже отбил лоб обо все возможные стены...
Чушь! Я не прошу никого делать работу за меня. Я прошу людей помочь мне разобраться в виде наглядного примера. У меня нет времени читать много литературы. Нет человека, который бы мне все объяснил если я вдруг что-то не пойму в книге.В противном случае это попрошайничество, как в переходах: "Подайте бедному несчастному не хотящему работать..."
Как Вы думаете, много тут людей, которые пишут плагины, читали кучу литературы? Если смотреть Вашим взглядом, то тут почти все порошайки.
Я и не говорил, что то, что Вы написали демагогия в принципе. Я сказал, что это демагогия для меня. Вы уверены, что написанное Вами все тут поймут? Было бы еще ничего, если бы Вы все это написали серьезно, без усмешек и выпендрежа. Я бы просто попросил разъяснить Ваши слова.Первое.
То, что я написал, описывает АЛГОРИТМ реализации необходимого. Программисту остаётся сесть и написать код, готорый будет реализовывать этот алгоритм.
Круто звучит. Только знаете, если Вы шли более трудным путем это еще не значит, что все должны так делать. Форум есть форум, он для того и существует, чтобы обмениваться опытом. В книгах могут писать одно, а на форуме ты можешь узнать, что это гораздо лучше можно сделать по другому. Опыт приходит с практикой, поэтому я и обратился в форум, чтобы люди поделились опытом. А опыт никакая теория не заменит.Второе.
Я НЕ разработчик DM, НЕ разрабатывал пример плагина, НЕ обучался на программиста - у меня другое образование. Два года назад я сменил FlashGet на DM чисто из-за того, что у DM есть возможность писать плагины. Результаты двух лет можно найти на форуме. Я разбирался во всём сам, по учебникам и доступным в интернете справочникам, и лишь в редких случаях обращался за помощью сюда, на форум - когда ни учебник, ни справочник не могли дать мне ответа. И он, как обычно, оказывался совсем рядом...
А ваши слова "...но за свою жизнь написал не одну программу средней сложности..." смотрятся на фоне ваших вопросов весьма странно...
Да, я написал несколько программ средней сложности, но с такими проблемами там не сталкивался. Я вообще больше люблю разрабатывать интерфейсную часть. Легкий, красивый и удобный интерфейс для меня самое главное. Остальные вещи я брал всегда из примеров, находил то, что мне нужно, разбирался как это работает и потом использовал по своему. И еще раз повторюсь, никогда проблем с этим не имел.
Именно как раз что-то подобное я и пробовал. Не получается. Поэтому я и прошу наглядный пример, чтобы посмотреть как все-таки это делается.Азы программирования - разбивать задачу на подзадачи до тех пор, пока подзадачу можно будет реализовать. Ваше "элементарное" действие "..добавить ссылки на закачку нажатием на кнопку на форме настроек..." сразу рассыпается на минимум три: 1) процедура добавления закачки; 2) привязка процедуры к форме 3) запуск привязанной процедуры на форме. Вы пробовали это СДЕЛАТЬ? У вас получилось? Или вы сразу СПРАШИВАТЬ начали?
Вот это уже кое что. По крайней мере в тему. Сейчас допишу, попробую.Некий наглядный пример (по учебнику):
Ошибки не проблема. Если там действительно то, что мне нужно, думаю разберусь.Здесь 90% необходимого вам. Писалось на скорую руку, поэтому может содержать ошибки.
Я не знаю что такое "RTFM!". Разъясните пожалуйста.Просто вопрос, поставленный в вашим ключе, так и подмывает ответить "RTFM!"...
Я не пользуюсь шаблонами. Я пользуюсь примерами. И только для того, чтобы понять как они работают.Я понимаю, что шаблонами пользоваться проще, но на все случаи жизни шаблон не создашь.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Не только почитать - хотя бы ту же справку Delphi, в которой описан, во-первых, ОСНОВНЫЕ принцип и методика построения плагинов, во-вторых, способы привязывания процедур и функций, а и попробовать повторить то, что там написано.Lancaster wrote:Кто предполагает? Вы предполагаете? Я вот например, совсем другое предполагаю. Вы в каком веке живете? Вы считаете, что я должен был начитаться книжек перед тем, как сюда писать?Просто вопрос, заданный на форуме, предполагает, что человек в поисках ответа на него уже отбил лоб обо все возможные стены...
Фраза улыбнула. Книги из интернета качают как раз в этом случае - нет в библиотеке (и не предвидится - вы часто видели в библиотеке трёхтомник Кнута "Искусство программирования"?) либо нет денег на приобретение.Lancaster wrote: Давайте тогда еще на информационных ресурсах, где такие книги можно скачать напишем, мол перед тем, как качать вы все библиотеки и магазины в городе обошли?
У меня нет времени, чтобы писать наглядные примеры. Нет человека, который бы выдирал из моего кода (на который, кстати, убито ЛИЧНОЕ время) базовые конструкции и приводил их к виду "наглядного примера". Тем более когда "наглядный пример" есть в справке.Lancaster wrote: У меня нет времени читать много литературы. Нет человека, который бы мне все объяснил если я вдруг что-то не пойму в книге.
Как Вы думаете, много тут людей, которые пишут плагины, читали кучу литературы? Если смотреть Вашим взглядом, то тут почти все порошайки.
Как вы думаете, нужно ли перед тем как писать плагин, узнать хотя бы, чем он вообще отличается от программы?
Все мы попрошайки - определённая доля опыта без вопросов к более "продвинутым" не приобретается. Однако без собственной базы ответ "продвинутого" может быть непонятным - вряд ли вы сможете сразу разобраться в двигателе "Мерседеса" даже по инструкции, не изучив предварительно устройство двигателя хотя бы "Жигулей"...
...хотя так хочется!..
"Как я уже говорил, я не люблю повторять." (с)Lancaster wrote:Я и не говорил, что то, что Вы написали демагогия в принципе. Я сказал, что это демагогия для меня. Вы уверены, что написанное Вами все тут поймут? Было бы еще ничего, если бы Вы все это написали серьезно, без усмешек и выпендрежа. Я бы просто попросил разъяснить Ваши слова.Первое.
То, что я написал, описывает АЛГОРИТМ реализации необходимого. Программисту остаётся сесть и написать код, готорый будет реализовывать этот алгоритм.
Согласен, некоторый выпендрёж имел место быть, извините. Однако не усмешка там была, а скорее подтрунивание над "детскими" вопросами. Почему "детскими" - прочтёте ниже.
Люди гораздо охотнее делятся опытом с теми, кто показал, что умеет приобретать его самостоятельно. В этом случае затраченные усилия не пропадут даром. "Дай голодному рыбы - он будет сыт один раз. Научи его ловить рыбу - он будет сыт всегда."Lancaster wrote: Круто звучит. Только знаете, если Вы шли более трудным путем это еще не значит, что все должны так делать. Форум есть форум, он для того и существует, чтобы обмениваться опытом. В книгах могут писать одно, а на форуме ты можешь узнать, что это гораздо лучше можно сделать по другому. Опыт приходит с практикой, поэтому я и обратился в форум, чтобы люди поделились опытом. А опыт никакая теория не заменит.
Нет универсального решения любой задачи. Может получиться так, что пример, работающий у "советчика", не заработает у вас - разбираться почему "советчик" не будет, он надеется на вашу сообразительность и ЗНАНИЕ материала.
Я вам настоятельно рекомендую посетить ссылку, указанную в моей подписи. Возможно, она вам объяснит резкость моего ответа.
Понимаю, понимаю. Меня, в свою очередь, всегда раздражала необходимость тратить 80% времени на разработку интерфейса в ущерб решению поставленной задачи, без которого красивый интерфейс попросту теряет смысл...Lancaster wrote:Да, я написал несколько программ средней сложности, но с такими проблемами там не сталкивался. Я вообще больше люблю разрабатывать интерфейсную часть. Легкий, красивый и удобный интерфейс для меня самое главное. Остальные вещи я брал всегда из примеров, находил то, что мне нужно, разбирался как это работает и потом использовал по своему. И еще раз повторюсь, никогда проблем с этим не имел.
А хотите я вам дам исходный код своего Auto Switch 0.2.0.3 ?Lancaster wrote: Именно как раз что-то подобное я и пробовал. Не получается. Поэтому я и прошу наглядный пример, чтобы посмотреть как все-таки это делается.
Я знаю, что я не гуру программирования, и у меня много топорного, но я не боюсь в этом признаться.
Не сочтите за сарказм, но я искренне на это надеюсь.Lancaster wrote:Ошибки не проблема. Если там действительно то, что мне нужно, думаю разберусь.Здесь 90% необходимого вам. Писалось на скорую руку, поэтому может содержать ошибки.
RTFM - Read This Fucking Manual - Прочти эту хренову инструкцию.Lancaster wrote:Я не знаю что такое "RTFM!". Разъясните пожалуйста.Просто вопрос, поставленный в вашим ключе, так и подмывает ответить "RTFM!"...
Подобный ответ на форуме означает, что заданный вопрос имеет вполне ясное изложение в общедоступном справочном материале, который вопрошающий не удосужился изучить.
В последнее время, с развитием сети Интернет, появился современный аналог этой аббревиатуры.
STFW - Search The Fucking Web - Поищи в грёбаном интернете.
Ответ означает, что ссылки на искомую информацию можно найти в любом мало-мальски серьёзном интернет-поисковике.
А вы уверены, что, увидев пример, сможете понять его работу? И что небольшое изменение, адаптирующее пример к вашим нуждам, оставит его работоспособным?Lancaster wrote:Я не пользуюсь шаблонами. Я пользуюсь примерами. И только для того, чтобы понять как они работают.Я понимаю, что шаблонами пользоваться проще, но на все случаи жизни шаблон не создашь.
И зайдите на сайт DRKB - самый полный Delphi FAQ на русском языке. 30-мегабайтная справка вам во многом поможет.
Надеюсь, что своими комментариями не отбил у вас охоту задавать вопросы и спрашивать совета...
P.S. Наклоняю голову перед модераторами - оверквотинг, флейм...
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если у Вас нет времени и Вы считаете мои вопросы детскими это Ваши проблемы. Я Вас не заставляю мне помогать. Если Вы такой умный, давно бы уже в тестовый пример дописали то, что я прошу и выложили бы. Вы больше текста здесь написали и больше времени потратили на это, чем потратили бы на то, что я действительно просил."Как я уже говорил, я не люблю повторять." (с)
Согласен, некоторый выпендрёж имел место быть, извините. Однако не усмешка там была, а скорее подтрунивание над "детскими" вопросами. Почему "детскими" - прочтёте ниже.
У меня нет времени, чтобы писать наглядные примеры. Нет человека, который бы выдирал из моего кода (на который, кстати, убито ЛИЧНОЕ время) базовые конструкции и приводил их к виду "наглядного примера".
Хотя Ваши воспитательные нотации очень трогательны.
Вы знаете, это вообще-то дело вкуса. Кто-то любит копаться в двигателе авто, а кто-то любит делать внешний тюнинг. Посмотрите программу на Дискавери "Тюнинг в Лондоне" по моему или что-то подобное. Думаю Вы меня поймете. У любого большого проекта интерфейс и основу делают разные люди. Вот я предпочитаю работать с интерфейсом. Да и еще, без нормального интерфейса любой функционал тоже теряет всякий смысл.Понимаю, понимаю. Меня, в свою очередь, всегда раздражала необходимость тратить 80% времени на разработку интерфейса в ущерб решению поставленной задачи, без которого красивый интерфейс попросту теряет смысл...
Мне подошел бы ЛЮБОЙ пример. Буду очень признателен если поделитесь.А хотите я вам дам исходный код своего Auto Switch 0.2.0.3 ?
Я знаю, что я не гуру программирования, и у меня много топорного, но я не боюсь в этом признаться.
Я же говорил, я всегда так делал и всегда все понимал и все работало. Мне не нужно изменение примера, мне нужно понять его "каркас".А вы уверены, что, увидев пример, сможете понять его работу? И что небольшое изменение, адаптирующее пример к вашим нуждам, оставит его работоспособным?
Обязательно зайду скачаю, спасибо.И зайдите на сайт DRKB - самый полный Delphi FAQ на русском языке. 30-мегабайтная справка вам во многом поможет.
Опять заумные словаP.S. Наклоняю голову перед модераторами - оверквотинг, флейм...
P.S.: Кстати посмотрел Ваш код. Смысл я понял, поменял строчку
type TActFunc = function ActionFromForm(action: WideString; parameters: WideString): WideString; stdcall;
на
type TActFunc = function (action: WideString; parameters: WideString): WideString; stdcall;
потому, что была ошибка. Это действительно пишется так, как Вы написали или я опять что-то не понял.
(сравнил со строчкой type TDMTestPlugIn = class(TInterfacedObject, IDMPlugIn))
После этого изменения вылазит ошибка несовметимости типов
Incompatible types: 'regular procedure and method pointer'
в строчке
CF.DoFunction:=DoActionAnywhere;
Не пойму почему, вроде везде один тип.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Да-да, поэтому какой смысл в многочисленный консольных приложениях? Каждая программа должна иметь ГУЙ! Извините, GUI.Lancaster wrote: Да и еще, без нормального интерфейса любой функционал тоже теряет всякий смысл.
Где-то под моими сообщениями есть кнопочка "ЛС" - личное сообщение. Отправьте мне свой почтовый адрес.Lancaster wrote: Мне подошел бы ЛЮБОЙ пример. Буду очень признателен если поделитесь.
Цитата = Quote . Цитирование = Quoting . Соответственно оверквотинг - чрезмерное цитирование.Lancaster wrote:Опять заумные словаP.S. Наклоняю голову перед модераторами - оверквотинг, флейм...
Flame (пламя) - спор с переходом на личности и оскорбления.
Flood (наводнение) - заполнение форума бессмысленными сообщениями.
Offtopic (уход от темы) - отклонение сообщений от темы форума.
Please learn English forums' terms first.
Извините, это я описАлся. Конечно, в определении функции имени быть не должно.Lancaster wrote: P.S.: Кстати посмотрел Ваш код. Смысл я понял, поменял строчку
type TActFunc = function ActionFromForm(action: WideString; parameters: WideString): WideString; stdcall;
на
type TActFunc = function (action: WideString; parameters: WideString): WideString; stdcall;
потому, что была ошибка. Это действительно пишется так, как Вы написали или я опять что-то не понял.
(сравнил со строчкой type TDMTestPlugIn = class(TInterfacedObject, IDMPlugIn))
Компилятор же подсказывает: несовместимость типов "обычная процедура" и "указатель на метод объекта". Почитайте справку Delphi, в чём разница.Lancaster wrote: После этого изменения вылазит ошибка несовметимости типов
Incompatible types: 'regular procedure and method pointer'
в строчке
CF.DoFunction:=DoActionAnywhere;
Не пойму почему, вроде везде один тип.
Это ещё одна моя ошибка - способ использовался давно, исходники похоронены в архиве. Попробуйте
type TActFunc = function (action: WideString; parameters: WideString): WideString of object;
А теперь цитата, перенесённая сверху.
Как вы думаете, почему я пока что единственный, кто вам хотя бы как-то отвечает?Lancaster wrote: Если у Вас нет времени и Вы считаете мои вопросы детскими это Ваши проблемы. Я Вас не заставляю мне помогать.
(данный вопрос отнюдь не риторический, жду вашей версии)
При написании каждого нового плагина приходится писать новый код РЕШЕНИЯ задачи. Единственное, что более-менее остаётся постоянным - это чтение/сохранение настроек (каждый раз нового набора) и обмен данными между формой настроек (которую каждый раз приходится рисовать заново) и плагином.Lancaster wrote:Если Вы такой умный, давно бы уже в тестовый пример дописали то, что я прошу и выложили бы.
И потом не остаётся времени на то, чтобы думать, какие действия "элементарные", и править код исходного плагина.
Мне пришлось разработать целую универсальную систему настроек для того чтобы при написании нового плагина обходиться парой строк собственно описания настроек, а не переписывать каждый раз полотно их сохранения/загрузки. Вот эту систему я внёс в исходный код.
Этот текст я писал (и пишу) в промежутках между основной работой - когда открывается документ, когда он сохраняется, когда мне надо передохнуть... Код - по памяти.Lancaster wrote:Вы больше текста здесь написали и больше времени потратили на это, чем потратили бы на то, что я действительно просил.
А так мне пришлось бы лезть в справку, выискивая для вас нужные цитаты (что вы вполне можете сделать сами - последний ваш вопрос ярчайшее тому подтверждение), искать архивы исходников, а в них - завалявшийся код, потом в коде искать объявление нужной функции, потом дописывать эту функцию в исходник плагина...
По-вашему, вы первый задаёте подобные вопросы?
А как вы хотели? Совета - и без нотаций?Lancaster wrote: Хотя Ваши воспитательные нотации очень трогательны.
Прочитайте предложенную ссылку в подписи - поймёте.
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
А разве консоль не один из видов интерфейса?Да-да, поэтому какой смысл в многочисленный консольных приложениях? Каждая программа должна иметь ГУЙ! Извините, GUI.
Разве такие как я не сидели и не придумывали для вас удобные и умные команды?
Под интерфейсом я имел ввиду не только внешний вид.
Вполне возможно, что потому, что такие как Вы думают так же как Вы, поэтому не хотят повторяться. А такие как я просто наблюдают и ждут когда же все-таки будет такой плагинКак вы думаете, почему я пока что единственный, кто вам хотя бы как-то отвечает?
Я в принципе почти так же делаю в интерфейсных фичах.Мне пришлось разработать целую универсальную систему настроек для того чтобы при написании нового плагина обходиться парой строк собственно описания настроек, а не переписывать каждый раз полотно их сохранения/загрузки. Вот эту систему я внёс в исходный код.
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Когда "такие как вы", а когда и "сам себе злобный буратино". Да и придуманные вами команды ведь ещё надо закодировать?Lancaster wrote:А разве консоль не один из видов интерфейса?Да-да, поэтому какой смысл в многочисленный консольных приложениях? Каждая программа должна иметь ГУЙ! Извините, GUI.
Разве такие как я не сидели и не придумывали для вас удобные и умные команды?
Под интерфейсом я имел ввиду не только внешний вид.
Я весьма сомневаюсь, что программисты, выкладывающие (или нет) здесь свои плагины, "такие как я". У каждого своя вязанка дел - я просто резюмировал общее отношение. Если меня кто-то поправит или дополнит - я буду только рад. Поскольку в споре рождается мнение. А истина где-то рядом...Lancaster wrote:Вполне возможно, что потому, что такие как Вы думают так же как Вы, поэтому не хотят повторяться. А такие как я просто наблюдают и ждут когда же все-таки будет такой плагинКак вы думаете, почему я пока что единственный, кто вам хотя бы как-то отвечает?
Плагин вряд ли будет. По форуму можно найти в лучшем случае вставки в плагин. А разработчики заняты более другими важными делами.
А можно попросить ещё одну фичу? Нужен интерфейс (желательно именно интерфейс для TInterfacedObject) типа "клиент-сервер" для обмена данными типа "строка" между окнами разных плагинов. Плагин идентифицируется по THandle. Требуется: а) приём запроса в очередь запросов; б) обработка запроса в отдельном потоке; в) отдача результата запроса в очередь ответов.Lancaster wrote: Я в принципе почти так же делаю в интерфейсных фичах.
Есть что-нибудь похожее? Я в своём самообразовании до области интерфейсов ещё не дошёл, но для следующего этапа необходимо. И, как вы говорите, "нет времени".
P.S. Если бы мне кто показал код определения и реализации интерфейса плагинов из DM...
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Такой же как и у IDMPlugin (почти)Korney San wrote:P.S. Если бы мне кто показал код определения и реализации интерфейса плагинов из DM...
И еще, Корней, мой тебе совет - не отвечай в таких темах больше - сам же тупым в результате будешь выглядеть. Видь "такие как он" разрабатывал удобные комманды для таких как мы
Я тоже сам изучал програмирование вот так по книжкам да по книжкам уже 4 язык программирования учу (с++, delphi, php ...)
А ведь начинал с turbo basic
И например так как я знаком с ООП и ПП (процедурное программирование) то я практически сразу начинаю понимать новый язык только после учения синтаксиса.
Так вот для опытного программиста в плагинах DM разобратся просто как 2 копейки.
А для таких как Lancaster, я скажу почему разработчики не показали как создавать форму натсроек.
1) а может ты на чистом WinApi пишешь
2) самому легко разобратся
3) навязывание своего стиля программирования - дурной тон.
PS: может я где и ступил, может кого-то обидел но больше ни писать не отвечать тут в этой теме не буду. Кому сильно надо Велкам Ту ПМ
- Korney San
- Гуру
- Posts: 1116
- Joined: 02 Oct 2006, 17:01 Mon
- Location: Беларусь, Гомель
- Contact:
Я по большому счёту любитель - но Thunk родился и до сих пор сносит мне крышу... А опыт приобретается как раз на "разработке удобных комманд" для себя...vasa_pmr wrote:И еще, Корней, мой тебе совет - не отвечай в таких темах больше - сам же тупым в результате будешь выглядеть. Видь "такие как он" разрабатывал удобные комманды для таких как мы
...
Так вот для опытного программиста в плагинах DM разобратся просто как 2 копейки.
Каюсь - я страдаю дурным тоном... я целый Wizard для создания макета плагина написал... И он даже пустую форму настроек генерирует...vasa_pmr wrote: А для таких как Lancaster, я скажу почему разработчики не показали как создавать форму натсроек.
1) а может ты на чистом WinApi пишешь
2) самому легко разобратся
3) навязывание своего стиля программирования - дурной тон.
P.S. Тема зачахла полгода назад, Lancaster, поди, уже вагон плагинов написал с "удобными коммандами"...
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд