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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Я както попытался, чуть мозг не сломал разгребая результаты конвертации форм.

Уж лучше с нуля, тогда ты будешь уверен , что Lazarus сделал все настройки проекта правильно.
AlterEgo
новенький
Сообщения: 11
Зарегистрирован: 05.03.2011 10:06:32

Сообщение AlterEgo »

В Delphi коде использую MaxExtended.

Теперь freepascal ругается на нее:
(854,3) Error: Identifier not found "MaxExtended"

Поискав по папкам обнаружил, что она прописана в модуле math:

Код: Выделить всё

{$ifdef FPC_HAS_TYPE_EXTENDED}
    const
      MinExtended  =  3.4e-4932;
      MaxExtended  =  1.1e+4932;
{$endif FPC_HAS_TYPE_EXTENDED}


Этот модуль подключен у меня еще в Delphi.
Почему тогда не видно константу MaxExtended ??? :roll:
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

AlterEgo - у меня все работает, просто еще раз проверте ваш исходник, может что то затерлось и все такое...
вот пример:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
var E:Extended;
begin
    E:=MaxExtended;
    Caption:=FloatToStr(E);
end;

Все отработало хорошо, в Caption вывели значение: 1,1E4932
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Если это FPC x86_64, то в нём тип Extended не поддерживается и соответствующие константы то же отсутствуют.
AlterEgo
новенький
Сообщения: 11
Зарегистрирован: 05.03.2011 10:06:32

Сообщение AlterEgo »

Maxizar писал(а):AlterEgo - у меня все работает, просто еще раз проверте ваш исходник, может что то затерлось и все такое...
вот пример:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
var E:Extended;
begin
    E:=MaxExtended;
    Caption:=FloatToStr(E);
end;

Все отработало хорошо, в Caption вывели значение: 1,1E4932


И правда в x64 это не компилится, а под x32 все ОК.
Всем спасибо!
AlterEgo
новенький
Сообщения: 11
Зарегистрирован: 05.03.2011 10:06:32

Сообщение AlterEgo »

Подскажите, как положить готовый EXE или DLL в нужную директорию.
В Delphi была настройка в свойствах проекта Output directory.

А у FreePascal есть такая?

В настройках проекта с использование Lazarus нашел только -FU, но она кладет туда и другие файлы.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

AlterEgo писал(а):В настройках проекта с использование Lazarus нашел только -FU, но она кладет туда и другие файлы.

-FU вообще-то не должна класть никуда exe... Его путь указывает -FE, но кладет туда и скомпилированные модули. Чтобы все это разнести нужно использовать обе: -FE<exepath> -FU<ppupath>. В качестве последнего я обычно указываю ~/tmp

Добавлено спустя 1 минуту 36 секунд:
Mr.Smart писал(а):-o

Это имя исполняемого файла, а не путь к нему.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Иван Шихалев писал(а):
Mr.Smart писал(а):-o

Это имя исполняемого файла, а не путь к нему.

Указывать в нём путь с именем. Я всегда так делаю.
AlterEgo
новенький
Сообщения: 11
Зарегистрирован: 05.03.2011 10:06:32

Сообщение AlterEgo »

-o
работает

а где
-FE - в среде lazarus найти можно.
все вроде просмотрел...
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Отдельной опцией в параметрах проекта не нашел, но там можно произвольные ключи компилятора задавать...
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Кстати, упомянутой выше фичи иногда очень не хватает. Я, например, ещё со времён Delphi привык к определённой структуре проекта и теперь для ёё поддержания в Lazarus приходится извращаться с несколькими параметрами. В частности, -o с полный путём (что лишает проект мобильности - на другом компе приходится либо ложить проект в тот же каталог, либо править его конфиг).
Имхо, давно пора добавить параметр "относительный путь к исполнимоу файлу" - хотя бы под соусом совместимости с Delphi.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Странно, у меня в Lazarus'е указав имя файла просто "myfile" бинарник компилится в корне проекта
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Brainenjii писал(а):Странно, у меня в Lazarus'е указав имя файла просто "myfile" бинарник компилится в корне проекта

А мне в корне не надо, мне надо в отдельной папке (как бы прога обычно не из одного бинарника состоит, и хотелось бы все её файлы держать в кучке, не перемешивая с исходниками).
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

так и в отдельной папке тоже работает: bin/myfile, например
Ответить