Страница 1 из 4

Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 18.11.2010 21:52:19
Inttelc
Имеется проект в виде ряда динамических библиотек, написанных на Delphi7 и содержащие большое колическтво процедур. Возникла проблема в нехватке оперативной памяти для расчетов. Была попытка запустить проект в среде Embarcadero Delphi 2010 на компьютере с 8-ю гигабайтами оперативной памяти и с ОС Windows 7, 64 bit. Однако максимально используемый объем при расчетах - 3 Гб (при превышении которого выдается ошибка "out of memory").
Можно ли переходом на Free Pascal решить данную проблему?

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 18.11.2010 22:04:59
Sergei I. Gorelkin
Проблему нехватки памяти, возможно, удастся решить, но вместо нее могут возникнуть другие...

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 18.11.2010 22:13:27
Inttelc
Sergei I. Gorelkin писал(а):Проблему нехватки памяти, возможно, удастся решить, но вместо нее могут возникнуть другие...

А какую посоветуете версию? Где можно найти?
Я готов попробовать, поскольку иного выхода нет.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 18.11.2010 22:53:58
Sergei I. Gorelkin
Несколько дней назад вышел релиз 2.4.2, версия для 64-битной винды загружается отсюда: http://www.freepascal.org/down/x86_64/win64.var

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 00:11:43
stikriz
Inttelc писал(а):Можно ли переходом на Free Pascal решить данную проблему?

А точно Ваши данные займут больше 3Гб?
Это математические расчеты? Типа, матрицы, да?

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 00:56:40
Inttelc
Спасибо. Удалось скачать по ссылке
ftp://ftp.freepascal.org/pub/fpc/dist/2 ... -win64.exe

Добавлено спустя 3 минуты 8 секунд:
stikriz писал(а):
Inttelc писал(а):Можно ли переходом на Free Pascal решить данную проблему?

А точно Ваши данные займут больше 3Гб?
Это математические расчеты? Типа, матрицы, да?

Да, математическое моделирование переменного магнитного поля. Предел в 3 Гб не дает двигаться дальше.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 10:04:54
stikriz
Матрицу надо разбить на кубики поменьше, рещить в них, потом решать в кубиках побольше и т.д.
Машинные методы анализа надо посмотреть. Не знаю что у Вас там, наверняка сложнее. А я решал большие линейные уравнения на Sinclar Spectrum методом итераций. 48кб памяти и 320 кб диск. Матрица была под 300Кб. Тоже бил матрицу на кусочки. Все равно большинство данных в расчете участвует не все время. Значит, это большинство данных в оперативной памяти не нужно. Переход на 64 бит поможет преодолеть ограничение по адресации большого объема данных, но все равно нужно сразу писать правильно, да и работать будет быстрее.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 13:39:32
Inttelc
Я прорбовал реализовать метод блочных итераций. Получилось не очень. А времени доделывать пока нет. Нужно срочно доделать рассчет.
Скачал lazarus под win32 (lazarus-0.9.28.2-fpc-2.2.4-win32) - запустил свой проект дома - работает
Под win64 (lazarus-0.9.28.2-fpc-2.2.4-win64) - на работе нет. Долго компилирует.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 17:27:45
stikriz
Компилится?

Если Вы читаете данные из файла заранее созданного, ну и не только, то обратите внимание, что под 64 бита размерность данных изменилась. Используйте реальные типы данных, а не псевдонимы. Integer, например 64 бита, а был 32... Т.е. структуры, Sizeof_ы искать и править. Это первое что приходит на ум.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 17:45:14
Иван Шихалев
stikriz писал(а):Integer, например 64 бита

о_О
Насколько мне известно, это не так. 16 в режимах TP и FPC, 32 — DELPHI и OBJFPC.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 20:20:29
stikriz
Сейчас проверил - так и есть.

Добавлено спустя 2 минуты 7 секунд:
Я был уверен, что Integer должен стать int64, как в Delphi при переходе с 16 на 32 бита из 16 битной стал 32 битным.
Непорядок...

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 19.11.2010 22:13:59
Mr.Smart
stikriz
Пичитайте вот это. Написано убого, но доходчиво.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 22.11.2010 22:10:50
Inttelc
Копированием кода из DLL в основной модуль программы удалось добиться результата - программа считает. Уже пробовал загрузить оперативу по максимуму где-то 7100 Мб. DLL-ки с 32-битным кодом он не загружает. Вообще скаченная мною версия lazarus-0.9.28.2-fpc-2.2.4-win64 какя-то не доработанная (по моему): неудобно искать ошибки в коде. После первой попытки поставить программу на счет на ночь не хватило памяти, lazarus вместо таго чтобы выдать сообщение "out of mamory", как это делает Delphi, просто закрылся. Также, никак не могу разобраться как создавать DLL. В Delphi все просто: создаю новое приложение (libriary), сохраняю, компилирую (даже пустую, без кода) и в папке, в которую сохранил появляется соответствующий *.dll фал. Тут, в lazarus-е выдается ошибка: "Debugger erroe. Ooops, the debugger entered the error state. Save your work now! Hit Stop, and hope the best,we're pulling the plug". dll фал при этом не создается, вернее файл находится в процессе компиляции *.compilled

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 23.11.2010 05:57:32
Павел Ишенин
А если нажать Ctrl+F9 вместо F9? В дневных сборках этот баг поправлен.

Re: Переход из Delphi на FreePascal под Windows

СообщениеДобавлено: 23.11.2010 10:52:42
Inttelc
Где можно скачать наиболее стабильную версию?
Вот, с горем пополам создал DLL-ку, запустил. Программа считала. Затем, внезапно перестала компилировать, - пишет что отсутствует fpcmemdll.dll.