Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.049 c
2-1175825813
VolanD666
2007-04-06 06:16
2007.04.29
BytesPerScanLine


2-1175845494
worldmen
2007-04-06 11:44
2007.04.29
Работа с Excel (заголовок файла)


2-1175754669
_max_
2007-04-05 10:31
2007.04.29
tcp & peerport


15-1175512484
Kot Andrei
2007-04-02 15:14
2007.04.29
MSDN offline


1-1172832342
DenisNew
2007-03-02 13:45
2007.04.29
Предотвращение изменения размеров TToolButton





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский