Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

KOL2FPC


Страницы:   1 2 3 4 5

Кладов ©   (2003-05-30 19:04:00) 

Ну вот, первый шажок сделан: утилиту KOL2FPC я сделал, какое-то количество кода поправил, теперь формируется минимальный KOLFPC.PAS, в нем пока только TObj и TList, и это уже компилируется под FPC и даже кажется выполняется (для Windows пока). Кому интересно посмотреть, я выкладываю утилиту KOL2FPC, а так же архивчик GotoFPC.zip, там обновление для kol.pas от версии 1.74 (именно к обновленной версии и нужно применять KOL2FPC.exe, чтобы получился KOLFPC.PAS), и пример приложения (тьфу, какого приложения! программы), которое умеет так пока мало... но занимает 83,5К даже после удаления отладочной информации :) Ну, лиха беда начало, дойдут руки - мы и системные модули в FPC поменяем, чтобы добиться хотя бы в районе 40К минимальную прогу делать.

ссылки: http://bonanzas.rinet.ru/KOL2FPC.zip
http://bonanzas.rinet.ru/GotoFPC.zip


Gandalf   (2003-06-02 11:55:00) [81]

Закачал все это добро - выздровлю посмотрю. Я вот еще по поводу классов, все же может перевести КОЛ на классы вместо объектов? Я вообщем-то потихоньку начал...

ЗЫ: FPC понимает и смарт-линкинг и много еще чего, только среда плохо настройки сейвит, надо их руками в код вдалбливать, чтобы точно работало.


savva   (2003-06-02 11:53:00) [82]

кое как скомпилировал, но... размер приложения 349 Кб :))) это не есть ГУД..
какие у вас опции компилятора?


savva   (2003-06-02 11:04:00) [83]

и еще - Владимир, а сколько часов в сутки Вы спите (речь не идет о минутах :)) ?


savva   (2003-06-02 10:51:00) [84]

Владимир, а Вы бы представили публике тот модулбь который вы сделали - а то я например, никак не могу скопмилить тестовое приложение, ругается на строку

var Global_Synchronized: procedure( Sender: PObj; Param: Pointer ) = DummyObjProcParam;

словами
2100 / 68 kolfpc.pas
Fatal: Syntax error, ; expected but = found

но я думаю - что это не последнее чем он может возмутиться..


Кладов   (2003-06-02 07:29:00) [85]

Ну что, никто кроме Богуслава не пробовал посмотреть? Я на всякий случай положил на свой сайт архив с файлами для обеспечения совместимости с Delphi. Смотреть в разделе Инструменты (Tools), там и все остальные архивы для KOL2FPC.


Кладов   (2003-06-01 14:43:00) [86]

Код уменьшается только если директиву {$SMARTLINK ON} вставить в сам KOLFPC.PAS. И теперь exe-файл 26,5К (!), даже несмотря на то, что еще один класс добавился и куча функций и процедур. Я сейчас же обновлю архивчик GotoFPC (адрес в начале этой нитки), и на всякий случай KOL2FTP. Внимание: теперь для FPC 1.0.6, на более ранних не проверял.


Кладов   (2003-06-01 13:15:00) [87]


> Signal Segmentation

от этого я ушел, удалив промежуточные файлы, которые остались от предыдущей версии. Сейчас пытаюсь добавить очередную порцию кода в KOLFPC.PAS и сравнить размер экзешника - под FPC 1.0.6. Если получится, то имеет смысл добиться все-таки генерации KOLFPC.PAS, все-таки какой-то шаг в сторону многоплатформенности.

Кстати, после stripw экзешник сокращается до 45К. Уже легче (хотя вроде и так все опции в компиляторе таковы, чтобы не включать ничего лишнего). Возможно, разница в размере при добавлении кода в kolfpc.pas устраняется таким способом.


Кладов   (2003-06-01 08:14:00) [88]

Попробовал FPV 1.0.6 (до этого был 1.0.5). Вообще не компилирует:

Error: Signal Segmentation violation during compilation
Error: Long jumped out of compilation...


Вдруг перестал компилировать директиву Absolute, только с ее помощью мне в прошлой версии удалось обойти непонятки приведения типа TMethod( TProcOfObj ). В этот раз только ассемблерная вставка помогла. Но компиляция все равно оказалась невозможна, в прошлый раз хоть что-то компилировалось.

Я все больше склоняюсь к тому, чтобы сделать свой компилятор, и не зависеть более от произвола сторонних компилятор-делателей. И не выкачивать по 18 мегабайт дистрибутивов этих компиляторов. Кстати, если уж они поставляются в виде исходников (FPC), то обновления могли бы использовать для бедных скачивателей, у которых такой объем скачки - это подвиг и событие недельной важности.


Кладов   (2003-06-01 06:07:00) [89]

нереально


SPeller   (2003-06-01 04:12:00) [90]


> Delphi понимает только свой собственный dcu

Заставить наш компилятор делать Дельфийские dcu-шки :)


Кладов   (2003-05-31 21:10:00) [91]


> Может, тогда этот компилятор ещё и в Дельфи сунуть удастся?
>

это еще как? Delphi понимает только свой собственный dcu, на худой конец obj, но тогда его отладчик бесполезен. Есть множество отладчиков. И потом, зачем это, отлаживать можно и под Delphi, а потом просто перекомпилировать своим компилятором, в том числе для linux.


SPeller   (2003-05-31 20:23:00) [92]

Отладчик вот только Дельфийский, интересно, как к этому отнесётся?


SPeller   (2003-05-31 20:17:00) [93]

Почему бы нет? Может, тогда этот компилятор ещё и в Дельфи сунуть удастся? В таком случае вообще прекрасно будет - отличная среда + свой компилятор! :)


Кладов   (2003-05-31 12:45:00) [94]

Я вот думаю, не сделать ли свой компилятор с паскаля. Можно было бы
попробовать сделать его как двух-шаговый
Pascal->P-cod(Goodwell)[->assembler]->...->exe, тогда часть
P-cod->...->exe пригодилась бы для гудвела, да и часть Pascal->P-cod
можно было бы включить в гудвел как плагин, понимающий чистый
Паскаль. Паскаль очень простой язык для компиляции, в свое время я
делал работающий компилятор подмножества С в подобие П-кода (то, что
он работал, знаю на 100%, т.к. у меня был интерпретатор П-кода, и
программа работала в таком виде на СМке на реальном производстве), так
что проблем с написанием компилятора в П-код с Паскаля особых нет. П-код в
ассемблер тоже в принципе решабельно, даже какие-то оптимизации можно
сделать, по размеру и по скорости. А дальше доверить работу тому же TAsm"у и TLink"у, на первое время.


Кладов   (2003-05-31 09:47:00) [95]

Побольше немного добавлено. Посмотреть можно там же - обновил оба архивчика.

Теперь возникает подозрение, что FPC не понимает smart-linking на уровне по крайней мере процедур, и только модулями отбрасывает и/или классами. Размер экзешника увеличился после добавления пары классов и некоторого количества процедур и функций до 116К. Хотя может это я что-то с опциями компилятора намудрил. Кстати, насчет опций. Они что, в экзешнике хранятся? (Если удалить экзешник из проводника, то компилятор тут же забывает, где kolfpc.pas. Забавно получается).

Богуслав, или кто разбирался с FPC, помо жите разобраться насчет смарт-линкинга, пожалуйста. Вопрос важный: KOL весь строится на том, что лишние методы не будут вставлены в код программы, поэтому можно тип TControl раздувать до бесконечности. Если для FPC это не так, то там нужен совсем другой подход, и меня это не устраивает.


Кладов   (2003-05-31 08:19:00) [96]

там так и сделано. Но не ради наследования (а как опыт показал, для программирования наследование не нужно), а ради совместимости с FPC, который с object плохо работает.


alex_s   (2003-05-31 04:19:00) [97]

О, я понял, что речь идет о Free Pascal. Кстати, чтобы
долго не морочиться можно заменить object на class. Заодно
и наследование появится :-)


alex_s   (2003-05-31 04:09:00) [98]

прошу прощения за серость, и отсталость от времени, но что такое
FPC ? :-)


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо