Есть такой пакет AGG (AntiGrain Graphic). В нём есть файл agg_mode.inc. Полистав его вижу строчки:
- Код: Выделить всё
{$IFDEF FPC }
{$MODE DELPHI }
{$ENDIF }
Ага, думаю, должен собраться. Подключаю к проекту, жму "собрать" и с минуту залипаю на сообщении: Error: Incompatible type for arg no. 1: Got "Double", expected "LongInt"
- Код: Выделить всё
uses
... Math ...;
...
function TAgg2D.TextHeight(str : AnsiString ) : double;
var
x ,y : double;
...
y:= Max(y, glyph.bounds.y2 - glyph.bounds.y1); <-- вот тут ошибка
...
Смотрю glyph.bounds.y2 - тип целое. Ладно, думаю, в overload'ах запутался, бывает. Добавляю в var t : double; в код t := glyph.bounds.y2 - glyph.bounds.y1; и y:= Max(y, t) получаю Error: Incompatible type for arg no. 2: Got "Double", expected "LongInt"
Вот тут начинаю проверять откуда он берёт переменные - локальные, где он ищет функцию Max - в модуле Math. И залипаю уже минут на пять.
Открываю пустой проект, пишу:
- Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
var
a, b, c : double;
begin
a := 5.7;
b := 7.1;
c := Max(a, b);
Caption := FloatToStr(c);
end;
Запускаю - работает.
Перелистываю agg_mode.inc по новой. Криминала не нашёл. Погуглил - пусто.
Подскажите, куда копать дальше и какие маны курить?