169 похожих чатов

Совет нужен. Кто имел опыт создания своих компонентов DesignTime в

Lazarus. Есть невизуальный класс, для которого хочу попробовать сделать невизуальный DesignTime компонент на палитру. Сейчас в раздумье. Чтобы создать свой DT невизуальный компонент нужно будет его сделать наследником TComponent.
Изначальный RunTime класс сделан на основе TObject (ну не нужны мне были фишки TComponent). Вопрос: что делать?
1) Изменить изначальный RT класс?
2) В конструкторе нового DT компонента создавать объект RT компонента. НО не красиво: придётся дублировать все процедуры или при использовании придется постоянно обращаться через дочерний RT класс.

28 ответов

29 просмотров
Renat-Suleymanov Автор вопроса

Итак, я реализовал первый способ: fptelegram_dt.lpk Первая версия компонента: Это готовый longpolling телеграм бот, который вы можете использовать для быстрой разработки ботов для телеграм. здесь о longpolling телеграм ботах. Этот компонент можно использовать в приложениях с графическим и не графическим интерфейсом, демонах и службах и даже на веб-сервере (хотя на веб-сервере я предпочитаю web-хуки). Реализовал создание клавиатуры для телеграм ботов в дизайн-тайм. Простой пример использования: https://github.com/Al-Muhandis/fp-telegram/tree/master/examples/DesignTime и почти никакого кодинга.

Renat Suleymanov
Итак, я реализовал первый способ: fptelegram_dt.lp...

Я его использую уже год. Спасибо Вам. С моими навыками "закинуть на форму и написать обработчик" визуальный компонент это ещё лучше :)

Renat-Suleymanov Автор вопроса
©
Я его использую уже год. Спасибо Вам. С моими навы...

Он пока сырой (в смысле функционала, нужно будет докинуть множество методом и событий из основного raw класса TTelegramSender), так что если какой функционал нужно могу сделать акцент на этом. А если будут пуллреквесты - еще лучше )

Renat-Suleymanov Автор вопроса
Hemul GM
Через события работает?

Да, пока правда только три события из TTelegramSender реализовал. В рантайме классе их много. Нужно будет инкапсулировать их в компоненте дизайн тайм

Hemul GM
А многопоточность?

а зачем, сетевое соединение же все равно одно

Renat-Suleymanov Автор вопроса
Hemul GM
А многопоточность?

Если рантайм компонент реализуешь самостоятельно. В дизайнтайме: все в коробке. Он именно рассчитан для быстрой и несложной разработке. Все внутри создается

Arioch The
а зачем, сетевое соединение же все равно одно

Да как бы соединение одно, а запросов как бы много

Renat-Suleymanov Автор вопроса
Arioch The
а зачем, сетевое соединение же все равно одно

Не-не. ТАм действительно без многопоточности не обойтись. Как минимум для приема обновлений

Hemul GM
Да как бы соединение одно, а запросов как бы много

создавать поток на запрос - это плохая идея, вредная даже

Hemul GM
Создавать Таск - не вредная

TThreadList.Add про Omni не говорю, но его на лазаря никто видимо не станет портировать

Renat-Suleymanov Автор вопроса
Arioch The
но не на уровне же диспетчера

Вообщем там так: если райнтайм классы, то многопоточностью управляешь самостоятельно. ХОть пуллы задач, хоть много потоков, хоть один

Hemul GM
TTask TThreadPool Для Делфи

для дельфы я просто сделаю InputCollection.Put( <record с данными запроса> )

Renat-Suleymanov Автор вопроса
Hemul GM
Этот компонент без тредов?

Без. В режиме лонгполлинга идет опрос обновления на телеграм сервер. В случае получения апдейта, обработка его осуществляется в основном потоке. Пока так: для большинства задач норм.

Renat-Suleymanov Автор вопроса
Renat Suleymanov
Без. В режиме лонгполлинга идет опрос обновления н...

В смысле поток есть. Но обработка апдейта, которые делает пользователь на событии делается в основном потоке

Renat Suleymanov
Без. В режиме лонгполлинга идет опрос обновления н...

а что такое "в случае получения" ? я тебя там блокирующий запрос в отдельном потоке, или асинхронные I/O Completion ?

Hemul GM
Нет там запросов

что такоеvcomet / long polling ?

Arioch The
а что такое "в случае получения" ? я тебя там блок...

Там цикл на опрос сервера, где ответ может лететь до минуты

Renat-Suleymanov Автор вопроса
Renat Suleymanov
screenshot Да, пока правда только три события из TTelegramSen...

Опечаток конечно кучу наделал. А не исправлять. Сейчас увидел: callack вместо callback

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта