Форум: "KOL";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизСоздание пакета KOL для интеграции в др. языки. Найти похожие ветки
← →
georgy (2006-08-28 21:01) [0]Добрый день, я разработчик языка ForceBasic.
Очень хотелось бы узнать, имеется ли в KOL интерфейс типа Typelib (OCX), что бы можно было вызывать все свойства методы и события динамически, и была доступна динамически инфа о классе, этакий расширенный RTTI.
Т.е для того чтобы написать конвектор классов в другой язык (не обязятельно Delphi, например для ForceBasic)
← →
SPeller © (2006-08-30 16:45) [1]В KOL нет RTTI
← →
Barloggg (2006-08-30 16:57) [2]причем сознательно нет. и даже описано почему. в книжке.
← →
georgy (2006-08-30 23:43) [3]т.е изначально KOL создавался для Pascal и Delphi и всё..., т.е интергации в др. языки он не годится, KOL заморожен только для Pascal?
← →
Наиль © (2006-08-31 08:35) [4]
> т.е изначально KOL создавался для Pascal и Delphi и всё...,
> т.е интергации в др. языки он не годится, KOL заморожен
> только для Pascal?
Не совсем так. KOL максимально избегает основываться на virtual методах.
А они являются основой COM-технологии, и как следствие ActiveX-технологии. Но это не значит, что нельзя создать COM-объект из (вернее сказать, вокруг) KOL-контрола. Другое дело, что ActiveX подразумевает наличие Typelib. В VCL имеется аналог TypeLib"a - RTTI. Delphi автоматически преобразует одного в другого, поэтому создание ActiveX - достаточно лёгкий процесс. Для KOL-контролов в Delphi можно использовать редактор Type Library. Но это достаточно трудоёмкий, а для новичка ещё и не самый простой процесс. Хотя это намного легче, чем написать такой контрол с нуля, да ещё на другом языке. Единственное условие - соответствие Typelib реализованным в COM-объекте интерфейсам.
А вообще идея интересная - создание библиотеки KOLX (кодоэкономичная ActiveX библиотека). Мне видится два пути:
1. Анализатор кода основаный на ToolsAPI (если там заложена такая возможность), который генерировал бы аналог контрола с необходимыми свойствами и виртуальными методами. А на его основе ActiveX.
2. Так как MCK содержит в себе RTTI для Object Inspector"a, то его можно (при огромном-приогромном желании) приспособить под ActiveX.
Возможно я не прав. С KOL знаком только по наслышке. Буду рад любой критике. Ибо эта тема, явно, достойна обсуждения.
← →
Vedun (2006-08-31 08:40) [5]Использование dll, написанных с помощью KOL, при программировании на других языках тоже можно считать своего рода интеграцией. Конечно без использования объектов, только процедуры и функции.
← →
SPeller © (2006-08-31 14:30) [6]Наиль © (31.08.06 8:35) [4]
Так как MCK содержит в себе RTTI для Object Inspector"a, то его можно (при огромном-приогромном желании) приспособить под ActiveX
Нет, МСК - это совсем другая песна. Предназначение этих контролов - генерация кода, который в рантайме будет создавать и конфигурировать KOL-объекты. Это упрощение ручной работы, и не более.
georgy (30.08.06 23:43) [3]
т.е интергации в др. языки он не годится, KOL заморожен только для Pascal?
Смотря что подразумевать под интеграцией, и каковы ее механизмы.
Да, и вот еще:
georgy (28.08.06 21:01)
написать конвектор классов
Уважаемый, конвектор - это явление из физики, от слова конвекция. А для конвертации используется конвертор.
← →
Наиль © (2006-09-01 08:39) [7]
> Нет, МСК - это совсем другая песна. Предназначение этих
> контролов - генерация кода, который в рантайме будет создавать
> и конфигурировать KOL-объекты. Это упрощение ручной работы,
> и не более.
Когда я писал "приспособить под ActiveX", я подразумевал извлечение информации о свойствах (это точно) и методах (не уверен). Этого, естественно, не достаточно. Всё равно придётся писать (или генерировать) промежуточный код предоставляющий виртуальные методы для ActiveX.
← →
georgy (2006-09-01 22:09) [8]
> Использование dll, написанных с помощью KOL, при программировании
> на других языках тоже можно считать своего рода интеграцией.
> Конечно без использования объектов, только процедуры и
> функции.
Хотябы так, такая интеграция самая оптимальная (не нужно писать никакие интерфейсы, просто продекларировать функции). И классы здесь тоже можно использовать, примерно так:
public declare function СоздатьОбъект lib "KOL.dll" (...)...
public declare sub Кнопка_Caption lib "KOL.dll" (...)...
obj = создатьобъект ("Кнопка")
Кнопка_Caption ( obj, "Button1" )
Это, просто логический пример не привязаный ни к какому языку. Вообщем-то в QT так и реализовано. Хоиелось бы чтобы в KOL такое тоже было.
Описал декларации для KOL, и можешь с ней работать.
← →
georgy (2006-09-01 22:16) [9]Очень бы хотелось использовать в своём языке, именно компоненты KOL, KOL разработка отечественная, хочется использовать её а не скажем QT, вот как её перевести. Например мож посоветуете как использовать KOL в VisualBasic, это будет показательный пример использования KOL не только в Pascal... т.е Если будет пример использования KOL для Visual Basic, соответственно тогда KOL можно будет юзить во всех языках. Пример KOL для VB как угодно через ActiveX, или же простыми DECLARE...
← →
Vladimir Kladov (2006-09-02 11:24) [10]KOL - это интерфейс высокого уровня, который использует API, причем сделан он под конкретную API Windows, существующую на этой платформе. На Linux"е есть некоторое количество различных API, одно из них - QT. Т.е. если портировать KOL на Linux, то имеет смысл делать KOL как wrapper к QT.
← →
SPeller © (2006-09-03 17:15) [11]Возьмется ли кто-то писать такую ДЛЛ? Хотя, можно, наверно, как-то автоматизировать этот процесс.
← →
georgy (2006-09-03 18:24) [12]Я думаю DLL сделать можно, экспортировать каждый метод, свойство, чуть изменить параметры сделать облегчённый (процедурный) интерфейс для использования. KOL является надстройкой над WIN API, а как API KOL использовать нельзя..., я бы переделал KOL в DLL, да только в Object Pascal никогда не программировал, и незнаю как правильно экспортировать функции, кроме того я незнаю тонкостей проекта (будут ли работать методы, если из экспортировать как STDCALL)
← →
SPeller © (2006-09-04 18:59) [13]Нужно написать парсер kol.pas, который сделает модуль, содержащий stdcall обертки всех функций kol и каким-то образом обернет в функции доступ к объектам (методы - понятно, а вот поля - посложнее уже).
← →
Наиль © (2006-09-05 07:37) [14]
> Нужно написать парсер kol.pas, который сделает модуль, содержащий
> stdcall обертки всех функций kol и каким-то образом обернет
> в функции доступ к объектам (методы - понятно, а вот поля
> - посложнее уже).
Слава богу, что писать парсер нет необходимости. В составе Delphi имеется модуль ToolsAPI предназначеный для создания мастеров (Wizards). Я почти уверен, что парсер в нём реализован. К сожалению я только начал его (модуль) изучать и до таких глубин ещё недобрался.
Что касается полей, то в обёртке они должны выглядеть как свойсва видаproperty Field:CustomType read GetField write SetField;
где GetField и SetField обращаются к полю Field объекта KOL. Так что, здесь ни каких сложностей нет.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c