C:\FPC\2.0.2\bin\i386-win32>fpc -Mdelphi -Rintel -Og1p2 -Xs -XX -CX -Sg kol\kol. pas Warning: Only one source file supported Warning: Only one source file supported Warning: Only one source file supported Warning: Only one source file supported Warning: Only one source file supported Warning: Only one source file supported Warning: Only one source file supported Free Pascal Compiler version 2.0.2 [2005/11/26] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Win32 for i386 Compiling kol\kol.pas Compiling kol\messages.pas Compiling kol\windows.pas windows.pas(19011,30) Fatal: Syntax error, ":" expected but ";" found windows.pas(262,66) Fatal: Compilation aborted Error: C:\FPC\2.0.2\bin\i386-win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)
windows.pas(19011,30): function AbortSystemShutdownA; external advapi32 name 'AbortSystemShutdownA';
В чем ошибка? Делаю как описано в статье, даже версии FPC и KOL одинаковые.
C:\FPC\2.0.2\bin\i386-win32>fpc -Mdelphi -Rintel -Og1p2 -Xs -XX -CX -Sg kol\kol. pas Free Pascal Compiler version 2.0.2 [2005/11/26] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Win32 for i386 Compiling kol\kol.pas Fatal: Can't find unit RichEdit Fatal: Compilation aborted Error: C:\FPC\2.0.2\bin\i386-win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)
Помогите, скомпилировать KOL. Использовал статью с сайта, но похоже она устарела. Версию 2.30 достать уже не получилось, а при компиляции других версий - ошибки. Пробовал с 2.58 и самой ранней которую удалось найти 2.40
Вот с 2.40
C:\lazarus\kolfpc>fpc kol.pas -Sd -Rintel -Og2p2 -Xs -XX -CX -Sg
Free Pascal Compiler version 2.0.4 [2007/03/26] for i386
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Win32 for i386
Compiling kol.pas
kol.pas(458,15) Warning: An inherited method is hidden by "TThread.Init"
kol.pas(819,15) Warning: An inherited method is hidden by "TStrList.Init"
kol.pas(11057,3) Warning: Some fields coming after "aSetBkColor" weren't initial
ized
kol.pas(11106,3) Warning: Some fields coming after "aSetBkColor" weren't initial
ized
kol.pas(11256,3) Warning: Some fields coming after "aSetBkColor" weren't initial
ized
kol.pas(11469,3) Warning: Some fields coming after "fCustom" weren't initialized
kol.pas(11479,3) Warning: Some fields coming after "fCustom" weren't initialized
kol.pas(12505,10) Warning: Mixing signed expressions and longwords gives a 64bit
result
kol.pas(12507,14) Warning: Mixing signed expressions and longwords gives a 64bit
result
kol.pas(21423,10) Error: overloaded functions have the same parameter list
kol.pas(21434,10) Error: overloaded functions have the same parameter list
kol.pas(22219,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expect
ed "LPFILETIME"
kol.pas(22225,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expect
ed "LPFILETIME"
kol.pas(22231,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expect
ed "LPFILETIME"
kol.pas(22852,9) Error: Can't assign values to const variable
kol.pas(22854,16) Error: Can't assign values to const variable
kol.pas(22860,33) Warning: Mixing signed expressions and longwords gives a 64bit
result
kol.pas(22927,28) Fatal: Syntax error, ";" expected but "(" found
kol.pas(22927,28) Fatal: Compilation aborted
Error: C:\lazarus\fpc\2.0.4\bin\i386-win32\ppc386.exe returned an error exitcode
(normal if you did not specify a source file to be compiled)
Если без оптимизаций, то оригинальный KOL.pas компилил так:
c:\Prog\FPC\2.0.4\bin\i386-win32>fpc c:\prog\kol\kol.pas -Rintel -Sd -Sg -FuC:\Prog\KOL\ppDelphi
Free Pascal Compiler version 2.0.4 [2006/08/21] for i386
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Win32 for i386
Compiling c:\prog\kol\kol.pas
kol.pas(427,12) Warning: Virtual methods are used without a constructor in "_TObj"
kol.pas(620,5) Warning: Destructor should be public
kol.pas(773,5) Warning: Destructor should be public
kol.pas(937,5) Warning: Destructor should be public
kol.pas(1204,5) Warning: Destructor should be public
kol.pas(2161,5) Warning: Destructor should be public
kol.pas(2675,5) Warning: Destructor should be public
kol.pas(2981,5) Warning: Destructor should be public
kol.pas(9437,5) Warning: Destructor should be public
kol.pas(9540,5) Warning: Destructor should be public
kol.pas(10941,5) Warning: Destructor should be public
kol.pas(12031,3) Warning: Some fields coming after "aSetBkColor" weren't initialized
kol.pas(12080,3) Warning: Some fields coming after "aSetBkColor" weren't initialized
kol.pas(12230,3) Warning: Some fields coming after "aSetBkColor" weren't initialized
kol.pas(12443,3) Warning: Some fields coming after "fCustom" weren't initialized
kol.pas(12453,3) Warning: Some fields coming after "fCustom" weren't initialized
kol.pas(14230,21) Warning: No size specified and unable to determine the size of the operands, using DWORD as default
kol.pas(14246,19) Warning: No size specified and unable to determine the size of the operands, using DWORD as default
kol.pas(21822,33) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(36107,60) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(36110,60) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(37958,54) Warning: range check error while evaluating constants
kol.pas(44649,28) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(44648,44) Warning: Conversion between ordinals and pointers is not portable
kol.pas(45711,63) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(46067,9) Note: Local variable "ClientAfter" is assigned but never used
55395 Lines compiled, 6.4 sec
Обалдеть! У меня тоже получилось!
Граждане администраторы, обновите статью - не нужно конвертировать файл kol.pas (по крайней мере v 2.58)
После конвертации kol.pas не компилируется.
Нужно просто добавить файлы из архива ppDelphi.
Спасибо LAutour
Главное изменение все-таки не в KOL, а в FreePascal. Версия 2.0.4 в отличии от предыдущих стала нормально компилить object, поэтому конвертация их в class уже не нужна. Хотя до полной работоспособной компиляции delpi-kol программ - еще пока не очень.
Кстати компиляция Kol.pas из под оболочки FP то проходит, то фатал оболочки дает.
Неприятность еще в том, что некоторые файлы из архива ppDelphi заменяют родные файлы FPC Windows.pas, Messages.pas
А это приводит к проблемам при компиляции приложений.
Поэтому, наверное надо адаптировать kol.pas так, что бы использовались родные для FPC модули.
KOL привлекает меня не столько малым размером кода, сколько огромным количеством хороших компонентов, которые можно использовать с FPC.
Сам сказал и сам же сделал - порядка 10 не сложных изменений в файле kol.pas (v 2.58) привели к тому, что для компиляции не требуются файлы из архива ppDelphi.
Lazarus и KOL теперь дружат, можно использовать одновременно компоненты Lazarus и KOL без дележа windows.pas и messages.pas.
Кому нужен kol.pas для FPC могу куда-нибудь выложить или выслать.
Возможно, что в будущих версия FPC, его библиотеки будут более совместимыми с дельфийскими и изменения не потребуются вообще.
Первую ссылку видел, но FPC 2.2 когда официально выйдет? Может еще будут изменения, в общем из бета-версии Lazarus не хочется эксплуатировать другую бету, которую еще из SVN не собрали, а текущими средствами предлагаемый KOL не компилируется.
Я думаю, что стоит просто подождать официального выхода FPC 2.2, но изучать и пробовать можно уже и сейчас.