![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KOL2FPC
Кладов © (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 Кб..
Владимир, как Вы получили свой результат?