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


PVOzerski   (2003-06-03 17:11:00) [61]

О {$mode Delphi}:
обратил внимание на Кладов (03.06.03 11:20):
>[X] Delphi 2 extensions on
...
>[X] Delphi compatibility, прочее выкл. как по умолчанию

Комедия в том, что на самом деле это две взаимоисключающие опции.
1-я эквивалентна {$mode objfpc}, 2-я - {$mode Delphi}. Хотя эти режимы компилятора и похожи, но не идентичны (подробнее - см. статью И. Шихалева на fpc.by.ru). И какой из них реально задействуется компилятором в этой ситуации - без экспериментов не разберешься.


PVOzerski   (2003-06-03 16:44:00) [62]

Кстати, откуда этот самый указанный в Readme KOL 1.75 or higher взять? На сайте только 1.73 предлагается...


PVOzerski   (2003-06-03 16:17:00) [63]

А Вы еще не пробовали добавить {$ifdef FPC} {$mode Delphi} {$endif} в исходники KOL? Не исключаю, что совместимость улучшится.


savva   (2003-06-03 11:50:00) [64]

> Кладов (03.06.03 11:20)
> Надеюсь сегодня к ночи перегнать TControl, все остальное
> уже практически компилится с FPC.
Будем ждать:)) спасибо за опции, попробую вечером ключики компилятора к этим опциям выснить.

PS. Я поражаюсь Вашей работоспособности:)


Кладов   (2003-06-03 11:20:00) [65]

Все равно, собственный IDE от FPC хоть и в текстовом режиме, удобнее, если в нем отлаживаться. Это не какой-нибудь GDB, а нормальный борландовского стиля отладчик, из такого когда-то и Delphi вырос. По крайней мере, F8, F7, F4 понимает.

После компиляции с отладочной информацией - без комментирования кода с созданием экземпляра TList - не зависает, отрабатывает нормально (размер 343К-1,5М от опций). После применения stripw к этому экзешнику (26К) тоже работает нормально. При компиляции сразу без отладочной информации (Options|Mode: Normal, размер 27К сразу после сборки) - висит. StripW к такому экзешнику уже не меняет размер, и так же висит.

Попробовал разные режимы, пока нормально получается при таких сочетаниях режимов (по текстовому IDE, пока не смотрел, как это будет на языке ключиков):

Options|Mode: Debug
Options|Linker: (*) Link to smart libraries, прочее выкл.
Options|Debugger: [ ] Strip all debug information generation, т.е. выкл., остальное все равно какое;

ну и для компилятора:

Options|Compiler|Syntax: [X] Delphi 2 extensions on
[X] Allow label and goto (по умолчанию)
[X] Delphi compatibility, прочее выкл. как по умолчанию

Options|Compiler|Code generation:
Run-time check - по усмотрению, у меня все выкл.,
Target Processor - по усмотрению, у меня 386/486,
Optimization - по усмотрению, у меня (*) Generate smaller code, остальное выкл.

Options|Compiler|Assembler: (*) Intel style assembler;
(*) Use pecoff, остальное выкл.

Короче, компилировать с отладочной информацией, потом делать stripw. Возможно, баг FPC.

----------------------------------
Надеюсь сегодня к ночи перегнать TControl, все остальное уже практически компилится с FPC.


savva   (2003-06-03 10:18:00) [66]

> Кладов (02.06.03 20:23)
> Что же они пугают, что 8М качать? Оказалось, только 1,1М :)
Ну про 8М там сказано если качать всю IDE+FPC..


Кладов   (2003-06-02 21:59:00) [67]

Сейчас Test1.exe висит. Пробуйте :
{$DEFINE I386}
{$SMARTLINK ON}
{$APPTYPE GUI}
{$M-}

program Test1;

uses Windows, KOLFPC;

procedure DoTest;
var L: PList;
begin
MsgBox( "Hello, FPC world!", MB_OK or MB_APPLMODAL or MB_SETFOREGROUND );
{L := NewList;
L.Add( nil );
L.Free;}
end;

begin
DoTest;
end.


Насчет того mci... Просто поправьте в mmsystem в pp\...\Delphi - уберите на него ссылки (2 раза по 3 строки). Работает хелло и под 98.


Кладов   (2003-06-02 20:23:00) [68]

Размер может колебаться в зависимости от версии FPC, опций компиляции и сборки, и еще надо применять stripw, чтобы окончательно убрать отладочную информацию, потому что даже если в опциях указано не добавлять, что-то всегда добавляется. Это не суть важно, главное, что появляется возможность компилировать не только в Delphi.


> я использую другую IDE

Что же они пугают, что 8М качать? Оказалось, только 1,1М :)


Boguslaw   (2003-06-02 17:49:00) [69]

52kB empty exe - something strange ? When I tested logn time ago with FPC 1.1 empty project EXE should have no more then 13-16 kb !


savva   (2003-06-02 15:54:00) [70]

кстати, я использую другую IDE http://www.bloodshed.net/devpascal.html- там хоть не досовое окошко...


savva   (2003-06-02 15:10:00) [71]

прогрес:)) уменьшил я размер до 27 648 байт, но под 98 все также не пашет...


savva   (2003-06-02 14:47:00) [72]

> Кладов (02.06.03 13:51)
> а спорим, он байт в байт будет такой же, как тот, что получается после KOL2FPC ? :)
может быть:)) тогда может Вы опишите основные моменты, на которые следует уделить?:)) а то я что то прикинул сколько комбинаций может быть - у меня нету стока времени:))

и интересно, почему под 98 не работает код..


Кладов   (2003-06-02 13:51:00) [73]

а спорим, он байт в байт будет такой же, как тот, что получается после KOL2FPC ? :)

опциями надо порулить, отладку выключить, смарт-линк включить, ну и т.д.


savva   (2003-06-02 13:35:00) [74]

и 52 кб - это совершенно пустое приложение... повторяю просьбу - нет ли у вас возможности представить файл KOLFPC вашей (авторской :))) редакции ?


savva   (2003-06-02 13:32:00) [75]

у меня 340К при компиляции в fp.exe... и с сайта я Вашего уже качал сегодня...


Кладов   (2003-06-02 13:27:00) [76]


> занимает около 52 Кб..
> Владимир, как Вы получили свой результат?

Сейчас 27Кб, после stripw test1.exe. Некоторое время назад было 26,5К, но видимо, уже какие-то типизированные константы добавились и секция статической линковки увеличилась (чтобы не заморачиваться, я если где вижу, что идет несоответствие с типами параметров API-функции по сравнению с дельфийским windows.pas, просто дублирую описание external функции в KOLFPC.PAS, секция потихоньку увеличивается). Но на самом деле, это мелочь, увеличение на 512 байтов произошло наверное просто потому, что при сборке размер каждой секции округляется до 512 байт. Видимо, так.

Я надеюсь, вы fp.exe пользуетесь? :) Не через командную же строку работать... Хоть какой IDE, но есть.

В принципе, 27К неплохой результат, надо просто верить, что у FPC несколько раздут system.pas, но весь дальнейший рост - целиком на совести библиотеки и самого программиста. Так что если программа размером 100К в Delphi будет 120К в FPC, это совсем мелочь. Главное, что FPC - это большойшанс на развитие в сторону многоплатформенности. И в версии 1.1 кажется есть поддержка object.

Я еше кажется сюда не постил: сейчас лежит обновление от сегодняшнего утра тех двух архивов, и еще я выложил содержимое директории pp\units\win32\Delphi, которой, кажется, нет в дистрибутиве FPC (а она нужна). Все смотреть в tools-Инструменты на основном сайте. Кстати, кому невтерпеж новую версию KOL, то в GotoFPC.zip обновление заодно формирует 1.74+, который уже светится как 1.75.


savva   (2003-06-02 12:47:00) [77]

да дело то совсем не в этом...
> Кладов (01.06.03 14:43)
> И теперь exe-файл 26,5К (!), ...
и это при том, что код программы, гораздо более содержателен, чем тот который я ранее приводил:

{$DEFINE I386}
{$SMARTLINK ON}
{$APPTYPE GUI}
{$M-}

program Test1;

uses KOLFPC;

procedure DoTest;
var L: PList;
begin
L := NewList;
L.Add( nil );
L.Free;
end;

begin
DoTest;
end.

кстати, этот код у меня под 2000 работает, а под 98 - нет (просит из WinMM.DLL mciGetDeviceIDFromElementIDA )... и размер у него начиная от 340К..


Gandalf   (2003-06-02 12:30:00) [78]


> и при таком раскладе установка {$SMARTLINK OFF} дает проигрыша
> на 1Кб...(что в принципе логично - программа то пустая..)
> но сам размер...


Отруби debuginfo и подобный мусор - на крайняк пройдись strip-ом он это все вырежет...


savva   (2003-06-02 12:10:00) [79]

и при таком раскладе установка {$SMARTLINK OFF} дает проигрыша на 1Кб...(что в принципе логично - программа то пустая..) но сам размер...


savva   (2003-06-02 12:05:00) [80]

ну я даже не знаю... у меня под 2000 программа вида
{$DEFINE I386}
{$SMARTLINK ON}
{$APPTYPE GUI}
{$M-}
program Test1;
begin
end.

занимает около 52 Кб..
Владимир, как Вы получили свой результат?


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

Наверх

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