Компиляция в windows и linux

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Ответить
VSL
новенький
Сообщения: 11
Зарегистрирован: 22.04.2012 15:14:39

Компиляция в windows и linux

Сообщение VSL »

Здравствуйте!

Прошу сильно не пинать, я начинающий.
Хочу программу откомпилировать как в Linux так и в Windows. По умолчанию у меня используется Linux и в этой ОС все нормально компилируется.

1. Что нужно сделать, что бы откомпилировать программу в windows? Как я понимаю, нужно иметь windows с установленным компилятором и уже там производить компиляцию? Или можно это сделать прямо в Linux с использованием имеющегося компиялтора?

2. Для корректной работы с русскими шрифтами в windows, как я прочитал в книге, нужно использовать модуль FileUtil и указывать в операторах вывод в примерно таком виде writeln(UTF8ToConsole... Обязательно ли это делать, если нужно будет производить компиляцию в windows?
VSL
новенький
Сообщения: 11
Зарегистрирован: 22.04.2012 15:14:39

Сообщение VSL »

Не так все просто кажется с первого раза, но спасибо, буду разбираться.
Вот что еще хотел спросить, при попытке обозначить в разеделе опасаний uses модуль FileUtil
компилятор выдает ошибку. Это значит что этого модуля в компиляторе нет? Или что-то другое?
ronin
постоялец
Сообщения: 174
Зарегистрирован: 26.01.2010 23:14:46

Сообщение ronin »

текст ошибки можно увидеть?
VSL
новенький
Сообщения: 11
Зарегистрирован: 22.04.2012 15:14:39

Сообщение VSL »

Текст ошибки такой:
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)

Прописываю модуль так -
uses crt, FileUtil;

Без FileUtil работает, с ним выдает ошибку.
Версия компилятора у меня 2.4.0, среда разработки geany.
SuSe user
новенький
Сообщения: 13
Зарегистрирован: 02.10.2011 21:03:08

Сообщение SuSe user »

Есть часть кода:

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

var
  Form1: TForm1;
  desc,time, inf, a :real;

desc := StrToFloat (edit1.Caption)*1000;
time := StrToFloat (edit2.Caption)*60;
inf := StrToFloat (edit3.Caption);
a := desc*time*inf div 8 div 1024 div 1024;


Компилятор ругается на строчку:
a := desc*time*inf div 8 div 1024 div 1024;

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

unit1.pas(56,18) Error: Incompatible types: got "Real" expected "Int64"

Если Real заменить на Integer то всё работает, но мне нужно именно Real.
Этот код полностью работает в последней версии Embarcadero.
tema
постоялец
Сообщения: 376
Зарегистрирован: 24.03.2011 19:19:27

Сообщение tema »

Ну добавь round или trunc
a := trunc(desc*time*inf) div 8 div 1024 div 1024;
Ответить