Программировать начинал с Turbo Delphi Explorer, теперь решил пересесть на Lazarus.
В своих программах, для отображения листингов расчетов использовал модули ExprDraw и ExprMake, разработанные Григорьевым Антоном. Модули, в общем-то представляют собой два файла с расширением .pas (ExprDraw.pas и ExprMake.pas) и отлично отрисовывают любые формулы. В Lazarus столкнулся с некоторыми проблемами при их использовании, которые до сих пор не решены.
Изначально была вот такая ошибка:
на строчку:
- Код: Выделить всё
FFont.OnChange:=FontNotify;
ExprDraw.pas(791,32) Error: Wrong number of parameters specified for call to "FontNotify"
Решилась постановкой @:
- Код: Выделить всё
FFont.OnChange:=@FontNotify;
Далее возникла вот такакая ошибка:
на строчку:
- Код: Выделить всё
procedure TExprClass.SetNext;
ExprDraw.pas(818,25) Error: function header doesn't match any method of this class "TExprClass.SetNext;"
решилась вместе с первой проблемой включением режима совместимости с Delphi:
- Код: Выделить всё
{$mode Delphi}
Теперь вылазят ошибки, с которыми я не знаю. что делать... был бы поопытнее, переписал бы эти модули.
Собственно - ошибки:
В процедуре по отрисовыванию знака "набла" на строчку:
- Код: Выделить всё
lfHeight:=-MulDiv(GetDeviceCaps(Canvas.Handle,LogPixelSY),Font.Size,72);
ExprDraw.pas(3741,48) Error: identifier idents no member "Handle"
пробовал закомментировать все, что связано с "набла", т.к. мне она не нужна, но получил следующее:
В описании:
- Код: Выделить всё
type TExprBuilder=class
protected
Build:Boolean;
P:Integer;
S:string;
function Preprocess(S:string):string;
ExprMake.pas(12,44) Error: Duplicate identifier "S"
Вроде действительно - дублируется, но в Delphi это все работало... Помогите разобраться, пожалуйста.
У меня Lazarus 0.9.28.2 бета fpc 2.2.4 под Windows Vista. В Ubuntu 10.10 ситуация такая же.