Вот архив. Перечень изменений для FPC 2.6.0 по сравнению с оригинальной:
kol.pas
- ст. 34401: пофиксен баг с отображением первой вкладки TabControl
KOL_ansi.inc
- добавлены объявления некоторых типов и констант, которых не обнаружилось в модуле windows FPC 2.6.0
- изменен порядок объявления некоторых типов, так как не хотело компилировать
(подробнее - сравнением файлов в TotalCommander)
KOLDEF.INC
- ст. 225: добавлены некоторые дефайны для обратной совместимости с нашими компонентами
KOLGRushControls3.pas (ориг. KOLGRushControls.pas)
- файл переименован, чтобы не конфликтовать с текущим в папке ElementsDelphicode
- ст. 1984: обойдено использование функции KOL.Format, так как она выдавала ошибку в FPC 2.6.0
Этот топик читают: Гость
Ответов: 4630
Рейтинг: 749
|
|||
карма: 26 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Спасибо.
Беру тайм-аут на подумать |
|||
карма: 9 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Вау, спасибо. С нетерпением жду выводов. Я самые простые баги выловил, теперь остались посложнее - требуется помощь.
[offtop]Рекомендую всё же установить компилятор - там удобный инсталлятор, всё корректно устанавливается/удаляется, в системе не мусорит.[/offtop] |
|||
карма: 26 |
|
Ответов: 258
Рейтинг: -27
|
|||
[b]---------------------------
Hiasm --------------------------- RichEdit line insertion error. --------------------------- ОК --------------------------- [/b] Что это значит? Я в FormatStr вставил текст размером 37 кбайт, и получил эту ошибку в подарок, как от ее избавится? Только в этом hiasm'е ,в альтернативной сборке работает все ------------ Дoбавленo в 19.53: Нашел в чем проблема, язык китайский не работал |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
В первом посте обновлен компилятор:
- включены все промежуточные исправления; - структура каталогов исходного кода приведена к оригинальному виду, чтобы можно было бы более просто сравнивать с оригиналом; - пакет обновлен до SVN версии 1341; - дефайн VER2_6 в коде компонентов заменен на FPC_NEW, чтобы не пришлось править при переходе на следующую версию компилятора; - добавлен кросс-компилятор и необходимые модули для компиляции 64-битных приложений. Если у вас уже был установлен этот компилятор - перед установкой обновленной версии удалите его, выполнив unins000.exe и удалите каталог FPC 2.6.0 (если останется). Кто разбирается - могут поэкспериментировать с 64-битным компилятором. Вот архив с тестовым проектом. В него включены файлы KOL, грубо "обработанные напильником" для минимального функционирования под 64 бита. В файлах compileXX.bat прописать путь к своей папке HiAsm. |
|||
карма: 26 |
|
Ответов: 1429
Рейтинг: 50
|
|||
В 32 мой интерфейс на OpelGL работает без ошибок
Спасибо! Netspirit писал(а): Кто разбирается - могут поэкспериментировать с 64-битнымЖаль, что я не разбираюсь, надеюсь в этом направлении тоже будут шаги. Я, как обезьяна с гранатой, попытался скомпилировать 64 бит, но без успеха: Подготовка к сборке проекта... Генерация кода целевого языка Компоновка проекта... Command line: ppcrossx64.exe "Drogram FilesHiAsmElementsdelphicodeProject43.dpr" -Fu"Drogram FilesHiAsm\compilerFPC 2.6.0units64" -FE"Drogram FilesHiAsm" -FU"Drogram FilesHiAsmElementsdelphicodeunits64" -Twin64 -vi Target OS: Win64 for x64 Compiling Drogram FilesHiAsmElementsdelphicodeProject43.dpr Compiling Drogram FilesHiAsmElementsdelphicodehiMainForm_8E37B50.pas Compiling Drogram FilesHiAsmElementsdelphicodehiMainForm.pas Compiling Drogram FilesHiAsmElementsdelphicodeShare.pas Compiling Drogram FilesHiAsmElementsdelphicodeDebug.pas Share.pas(1582,17) Error: Asm: [push reg32] invalid combination of opcode and operands Share.pas(1583,17) Error: Asm: [push reg32] invalid combination of opcode and operands Share.pas(1608,17) Error: Asm: [pop reg32] invalid combination of opcode and operands Share.pas(1609,17) Error: Asm: [pop reg32] invalid combination of opcode and operands Share.pas(1663,31) Error: Typecast has different size (4 -> 8) in assignment Share.pas(2051,6) Error: Illegal type conversion: "AnsiString" to "LongWord" Share.pas(2554,4) Fatal: There were 6 errors compiling module, stopping Fatal: Compilation aborted Сборка завершена. |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
А пакет под 64 бита пока не дорабатывался - только основные модули и KOL, которая в тестовом проекте. То-есть, пока работает только тестовый проект.
А вот с пакетом такое дело: я не буду пока особых усилий прилагать для портирования его под 64 бита, так как основная идея - минимальные изменения для совместимости с официальным пакетом. Иначе будет сложно вести две версии пакета (либо одну, но будет много отличий от основного пакета). Вот если бы компилятор поддерживался официально - тогда можно отдельно вести только пакет для 64-битной версии. |
|||
карма: 26 |
|
Ответов: 1429
Рейтинг: 50
|
|||
Netspirit, я обеими руками - за официальный FPC.
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Обновление компилятора
- компилятор обновлен до версии 2.6.2 - KOL обновлена до версии 3.21 - пакет обновлен до версии SVN 1534 64-битный компилятор по-умолчанию тоже устанавливается. Соответственно регистрируются два компилятора "FPCx32" и "FPCx64". Переименована папка компилятора. Для модулей используются отдельные каталоги в папке code, поэтому больше не требуется очищать папку units при переключении старого и нового FPC. 64-битная редакция KOL включена. В некоторые компоненты пакета включена 64-битная поддержка. Теперь 64-битные программы можно создавать в 2 клика. Прочие компоненты будут дорабатываться по мере необходимости. Особых трудностей при переводе компонентов на 64 бита нет. Единственная проблема - вставки на ассемблере, в котором я недостаточно разбираюсь. Из-за этого в данный момент не работает MathParse и зависимый от него Math. Там, где это возможно, для 64-битной версии ассемблерные вставки заменяются на паскалевские. Можете удалить предыдущую версию компилятора с помощью compilerFPC 2.6.0unins000.exe |
|||
карма: 26 |
| ||
Голосовали: | sаmakacd, MAV |
Ответов: 1304
Рейтинг: 405
|
|||
Netspirit, спасибо что продолжаешь проект. До сих пор с содроганием вспоминаю попытку использования многомерных массивов с компилятором delphi4. Да кстати об Авасте и о FPCx32, из двух десятков запущенных примеров срабатываний не было.
|
|||
карма: 3 |
|
Ответов: 413
Рейтинг: 57
|
|||
Netspirit, Переустановил и при попытке скомпилировать схему компилятором delphi выдало ошибку:
C:\Program Files\HiAsm_AltBuild\Elements\delphi\code\DropSourcek.pas(368) Error: Undeclared identifier: 'NativeInt' C:\Program Files\HiAsm_AltBuild\Elements\delphi\code\DropSourcek.pas(1097) Error: Undeclared identifier: 'NativeInt' C:\Program Files\HiAsm_AltBuild\Elements\delphi\code\hiDropFile.pas(5) Fatal: Could not compile used unit 'DropSourcek.pas' На FPC скомпилировалось нормально. Попробовал скомпилировать используя старую папку Delphi - компилируется. |
|||
карма: 0 |
|
Ответов: 1304
Рейтинг: 405
|
|||
Poputchik, в DropSourcek.pas заменил в NativeInt на Integer, компиляция успешна на FPCx32 и delphi но на FPCx64 вылазит ошибка. Подождём пока Netspirit увидит сообщение.
|
|||
карма: 3 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Не обратил внимание, что DropSourcek.pas не использует модуль Share.pas, в котором объявлен тип NativeInt для Delphi.
Для исправления добавить Share в uses файла DropSourcek.pas. Для разработчиков. Тип NativeInt введен взамен типа Integer для случаев, когда данные, хранимые в Integer имеют размер 64 бита на 64-битной платформе и 32 бита на 32-битной (последнее подразумевалось по-умолчанию, когда платформа была только 32-битная). В частности - к типу Integer раньше приводились все указатели для вычисления смещения. Теперь их нужно приводить к NativeInt. Многие типы данных Windows в 64-битной версии сменили размер с 32 на 64 бита (в частности - все хендлы). Если раньше для их хранения использовались переменные Integer, то сейчас нужно использовать NativeInt. Тип NativeInt эквивалентен Integer в 32-битных программах, и Int64 - в 64-битных. Этот тип родной для нового FPC (и возможно новых Delphi), для старого FPC и Delphi он искусственно объявлен в Share.pas. Больше информации об особенностях программирования под 64 бита - здесь. Там это описывается применительно к ассемблеру GoAsm, так что внимание стоит обращать только на общеплатформенные вещи. |
|||
карма: 26 |
|
Ответов: 1304
Рейтинг: 405
|
|||
Netspirit писал(а): Особых трудностей при переводе компонентов на 64 бита нет. Единственная проблема - вставки на ассемблере, в котором я недостаточно разбираюсь. Из-за этого в данный момент не работает MathParse и зависимый от него Math.Netspirit, может попробовать использовать данную директиву
пример
|
|||
карма: 3 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Так это KOL-овская директива. Я её не использовал, так как не хотел разбираться с возможными проблемами в ассемблерной части, что ещё усугубилось бы в версии x64. Там по-моему и Кладов периодически забывает внести исправления в ассемблерную часть KOL.
А по поводу MathParse - я посмотрю, вроде объявленные там функции должны быть стандартными для FPC, использую их. |
|||
карма: 26 |
|