Topic: Error: identifier idents no member (Read 10394 times)
Hi everybody. I have a big problem 

I have a main Form. If i press enter, i want a new form to po up with two buttons.
Here is my code:
type
{ TTDQForm }
TTDQForm = class(TForm)
procedure FormKeyPress(Sender: TObject; var Key: char);
private
{ private declarations }
public
{ public declarations }
end;
TEscMenuForm = class(TForm)
private
{private declarations}
public
{public declarations}
end;
var
TDQForm: TTDQForm;
EscMenu: TEscMenuForm;
implementation
{$R *.lfm}
{ TTDQForm }
procedure TTDQForm.FormKeyPress(Sender: TObject; var Key: char);
var
QuitButton: TButton;
ResumeButton: TButton;
begin
if Key = #27 then EscMenu:= TEscMenuForm.CreateNew(self);
EscMenu.Height:=125;
EscMenu.Width:=300;
EscMenu.Visible:=True;
EscMenu.Parent:=self;
TEscMenuForm.QuitButton:= TButton.Create(self);
TEscMenuForm.QuitButton.Left:=120;
TEscMenuForm.QuitButton.Top:=50;
TEscMenuForm.QuitButton.Width:=70;
TEscMenuForm.QuitButton.Height:=25;
TEscMenuForm.QuitButton.Visible:=True;
TEscMenuForm.QuitButton.Enabled:=True;
end;
end;
And the program gives the error in the title of the topic with «QuitButton» at the end.
Please if somebody can, help me!
Kind regards Luxurious!
« Last Edit: January 16, 2013, 07:58:30 pm by Luxurious »
Logged
Welcome to Lazarus community.
1) Set the property KeyPreview of the TDQForm to True (it will catch the KeyPress event even if other component on that form will be focused)
2) Add there begin..end otherwise you are risking SIGSEGV
procedure TTDQForm.FormKeyPress(Sender: TObject; var Key: char);
var
QuitButton: TButton;
ResumeButton: TButton;
begin
if Key = #27 then
begin
if not assigned(EscMenu) then EscMenu:= TEscMenuForm.CreateNew(self);
EscMenu.Height:=125;
EscMenu.Width:=300;
EscMenu.Visible:=True;
EscMenu.Parent:=self;
TEscMenuForm.QuitButton:= TButton.Create(self);
TEscMenuForm.QuitButton.Left:=120;
TEscMenuForm.QuitButton.Top:=50;
TEscMenuForm.QuitButton.Width:=70;
TEscMenuForm.QuitButton.Height:=25;
TEscMenuForm.QuitButton.Visible:=True;
TEscMenuForm.QuitButton.Enabled:=True;
end;
end;
Logged
I did that, but i still have the error Error: identifier idents no member «QuitButton»
Logged
Ah, I missed this:
TEscMenuForm.QuitButton:= TButton.Create(self);It should be:
TEscMenuForm.QuitButton.Left:=120;
TEscMenuForm.QuitButton.Top:=50;
TEscMenuForm.QuitButton.Width:=70;
TEscMenuForm.QuitButton.Height:=25;
TEscMenuForm.QuitButton.Visible:=True;
TEscMenuForm.QuitButton.Enabled:=True;
end;
end;
EscMenu.QuitButton:= TButton.Create(self);
EscMenu.QuitButton.Left:=120;
EscMenu.QuitButton.Top:=50;
EscMenu.QuitButton.Width:=70;
EscMenu.QuitButton.Height:=25;
EscMenu.QuitButton.Visible:=True;
EscMenu.QuitButton.Enabled:=True;
end;
end;
BTW, why you don’t want to design the second form in design-time in Lazarus (i.e. why you create it in code) ?
Logged
I corrected the code, but the error remains. I dont really remember, i think, because when I made it the other way, i had a problem wih forms. I dont know :$
Logged
Also, you must add:
EscMenu.QuitButton.Parent:=EscMenu;What error message it gives?
Logged
Error: identifier idents no member «QuitButton» just this but 8 times.
« Last Edit: January 16, 2013, 09:04:28 pm by Luxurious »
Logged
Yes. Remove the local variable declaration QuitButton and paste it to declaration of TEcsMenuForm.
TEscMenuForm = class(TForm)
QuitButton: TButton;
private
{private declarations}
public
{public declarations}
end;
Logged
Oh now it works. 

Logged
Whatever you declare as a local variable is valid only within this procedure and is lost when the procedure ends.
Even worse, you create button in this procedure and pointer to the button is a local variable. When procedure ends, button is still allocated but pointer to it is lost and it can result in memory leak.
Therefore you redeclare the button as a field of the form because it belongs there. Also, that form is the owner of the button and button is automatically destroyed when the form itself is destroyed (i.e. you don’t have to destroy the button manually).
Logged
Logged
Iv_ писал(а):вместо {$R *.lfm} ставлю {$mode Delphi}
Это, мягко говоря, совершенно разные вещи. Их нельзя ставить одно вместо другого. К примеру, у Вас есть сковородка, чтобы жарить яишницу и вилка, чтобы эту яишницу есть. Теперь представьте, что Вы сковородку заменили вилкой и попытались изжарить на ней яишницу.
{$R *.lfm} — эта директива включает в Вашу программу ресурсный файл с описание формы. В этом файле с расширением .lfm находится описание формы и расположения на ней всех нужных программе элементов — размеры, координаты и т.п. Вы файл с описанием формы изъяли.
{$mode Delphi} — эта директива указывает компилятору режим совместимости с Delphi.
Логично предположить, что если Ваша программа должна компилироваться в режиме совместимости с Delphi и в Вашей программе используется форма с каими то элементами управления, то должны присутствовать обе директивы.
Добавлено спустя 6 минут 32 секунды:
Iv_ писал(а):как сохранить старый стиль шрифта, чтобы после изменений его вернуть?
Точно так же, как это делалось в Delphi.
Стиль шрифта — это обощённое название параметров шрифта. Следовательно, те прараметры шрифта, которые Вы изменяете, Вы должны сохранить. Например, название, размер, признак наклонности и т.п. Если Вам, впоследствии, нужно отменить изменения, то Вы считываете эти сохранённые где-нибудь (в доп. переменных или в ini-файле) параметры.
Добавлено спустя 19 минут 51 секунду:
Iv_ писал(а):Unit1.pas(37,18) Error: Identifier not found «HFont»
Это типичная ошибка невнимательного программиста.
Все определения типов данных описаны в каких-то определённых модулях. Вы модуль с определением HFont подключили?
если не знаете, где описано определение этого типа, воспользуйтесь контекстным поиском — ищите, в каком файле находится строка «HFont =».
Iv_ писал(а):Unit1.pas(37,18) Error: Error in type definition
Эта ошибка полностью связана с той, что Выше — устраните первую, вторая пропадёт автоматически.
***********************
P.S. Хочу заметить, что есть более изящный способ сохранения параметров шрифта, не связанный с описанием многочисленных его параметров:
1. Объявить переменную типа TFont.
2. Назначить ему специальным методом параметры другой переменной типа TFont, который Вы хотите сохранить.
- Код: Выделить всё
Var
FOld: TFont;
Begin
FOld:=TFont.Create;
FOld.Assign(Cnv.Font);
...
End;
Очень важно! Эта переменная, FOld, должна быть доступна из того места, откуда Вы будете восстанавливать старые параметры шрифта. По всей видимости эту переменную надо сделать членом класса формы и создавать в событии OnCreate этой формы.
************************
Iv_ писал(а):Unit1.pas(51,25) Error: Incompatible type for arg no. 1: Got «<erroneous type>», expected «LongWord»
Опять типичная ошибка невнимательного программиста.
Вы подсовываете компилятору неправильный тип данных. Он от Вас ожидает тип LongWord, а Вы ему суёте чёрте что и в попе бантик.
Строка эта, в том исходнике, что Вы тут привели, отсутствует, поэтому смотрите её сами, где в ней проблема.
Содержание
- Lazarus error identifier idents no member
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Lazarus error identifier idents no member
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
- Re: Error: identifier idents no member «Handle»
Lazarus error identifier idents no member
Iv_ » 08.01.2011 23:09:11
Добрый день.
Программировать начинал с 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 ситуация такая же.
Re: Error: identifier idents no member «Handle»
Padre_Mortius » 08.01.2011 23:37:16
Re: Error: identifier idents no member «Handle»
Iv_ » 08.01.2011 23:48:46
Логично, спасибо. Но тут проблема глубже зарылась.
Там есть следующие функции типа: function BuildExpr(Expr:string):TExprClass; Они тоже дублируются.
Переменная Expr используется вообще по всему модулю в обоих файлах.
Я попробую и ее заменить, но, не уверен за результат.
Спасибо.
Если интересно, то сами модули можно скачать тут (всего 52 КБ):
http://www.delphisources.ru/pages/sourc . awing.html
Может более понятно станет.
Добавлено спустя 25 минут 36 секунд:
Прошу прощения.
Во втором файле тоже поставил режим совместимости с делфи, и лазарус ругаться на дублирование перестал.
Там же закомментировал все, что касалось наблы. добрались до своего файла с программой.
Добавлено спустя 8 минут 49 секунд:
И ещё, не подскажете, почему ругается вот на это:
Код: Выделить всё // процедура для вывода ед. изм. типа «кг/см2» курсивом
procedure har5(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
FOld: HFont;
begin
FOld:=Cnv.Font.Handle;
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Size:=8;
Expr.Font.Name:=’Tahoma’;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
Cnv.Font.Handle:=FOld;
end;
Unit1.pas(32,2) Warning: Misplaced global compiler switch
Unit1.pas(37,18) Error: Identifier not found «HFont»
Unit1.pas(37,18) Error: Error in type definition
Unit1.pas(39,19) Warning: Symbol «Handle» is deprecated
Unit1.pas(51,13) Warning: Symbol «Handle» is deprecated
Unit1.pas(51,25) Error: Incompatible type for arg no. 1: Got » «, expected «LongWord»
Unit1.pas(66) Fatal: There were 3 errors compiling module, stopping
И еще, если ставлю в своем файле режим совместимости с делфи:
вместо <$R *.lfm>ставлю <$mode Delphi>
все компилируется, но форма — пустая.
если оставляю как есть — <$R *.lfm>вылетает ошибка:
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
Unit1.pas(59,2) Error: Error while linking
Добавлено спустя 9 минут 21 секунду:
И, раз уж затронул эту тему.
Как подобные вещи должны быть написаны под Лазарусом?
Например, как сохранить старый стиль шрифта, чтобы после изменений его вернуть?
Re: Error: identifier idents no member «Handle»
Vadim » 09.01.2011 06:14:40
Это, мягко говоря, совершенно разные вещи. Их нельзя ставить одно вместо другого. К примеру, у Вас есть сковородка, чтобы жарить яишницу и вилка, чтобы эту яишницу есть. Теперь представьте, что Вы сковородку заменили вилкой и попытались изжарить на ней яишницу.
<$R *.lfm>— эта директива включает в Вашу программу ресурсный файл с описание формы. В этом файле с расширением .lfm находится описание формы и расположения на ней всех нужных программе элементов — размеры, координаты и т.п. Вы файл с описанием формы изъяли.
<$mode Delphi>— эта директива указывает компилятору режим совместимости с Delphi.
Логично предположить, что если Ваша программа должна компилироваться в режиме совместимости с Delphi и в Вашей программе используется форма с каими то элементами управления, то должны присутствовать обе директивы.
Добавлено спустя 6 минут 32 секунды:
Точно так же, как это делалось в Delphi.
Стиль шрифта — это обощённое название параметров шрифта. Следовательно, те прараметры шрифта, которые Вы изменяете, Вы должны сохранить. Например, название, размер, признак наклонности и т.п. Если Вам, впоследствии, нужно отменить изменения, то Вы считываете эти сохранённые где-нибудь (в доп. переменных или в ini-файле) параметры.
Добавлено спустя 19 минут 51 секунду:
Re: Error: identifier idents no member «Handle»
Iv_ » 09.01.2011 10:09:37
Спасибо, Vadim . Вы многое мне прояснили. Пошел все править : )
Добавлено спустя 3 часа 49 минут 45 секунд:
Ещё вопрос остался.
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
этот файл точно есть, я нашел его по поиску. Чего тут может не нравиться?
Re: Error: identifier idents no member «Handle»
Vadim » 09.01.2011 16:08:16
Re: Error: identifier idents no member «Handle»
Iv_ » 09.01.2011 16:40:22
Это все есть. Сижу и читаю про то, что вы мне объяснили.
Заодно пробую, что получится. Вот, создал тест,
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
ExtCtrls, StdCtrls, ExprDraw, ExprMake;
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Edit1: TEdit;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
private
< private declarations >
public
< public declarations >
end;
var
Form1: TForm1;
// процедура для вывода ед. изм. типа «кг/см2» курсивом
procedure har5(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
// FOld: HFont;
begin
// FOld:=Cnv.Font.Handle;
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Size:=8;
Expr.Font.Name:=’Tahoma’;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
// Cnv.Font.Handle:=FOld;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
har5(Form1.Image1.Canvas,5,5,’кг//см^2′);
end;
Ошибка про невозможность открыть файл ввиду его отсутствия осталась.
Re: Error: identifier idents no member «Handle»
Vadim » 09.01.2011 18:20:18
Re: Error: identifier idents no member «Handle»
Iv_ » 09.01.2011 20:54:25
Re: Error: identifier idents no member «Handle»
svk12 » 10.01.2011 02:14:04
Iv_ писал(а): Спасибо, Vadim . Вы многое мне прояснили. Пошел все править : )
Добавлено спустя 3 часа 49 минут 45 секунд:
Ещё вопрос остался.
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
этот файл точно есть, я нашел его по поиску. Чего тут может не нравиться?
Ваша версия FPC не поддерживает использование файлов .lfm.
Следует обновиться, например, отсюда :
ftp://ftp.freepascal.org/pub/lazarus/
Re: Error: identifier idents no member «Handle»
Iv_ » 10.01.2011 10:02:17
Re: Error: identifier idents no member «Handle»
Vadim » 10.01.2011 13:01:35
Re: Error: identifier idents no member «Handle»
Iv_ » 10.01.2011 14:16:39
Спасибо. Последовал вашему совету. Скомпилировалось.
Еще заметил пару особенностей, может поясните:
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Buttons, ExprDraw, ExprMake;
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
private
< private declarations >
public
< public declarations >
end;
var
Form1: TForm1;
// процедура для вывода ед. изм. типа «кг/см2» курсивом
procedure har5(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
// FOld: HFont;
begin
// FOld:=Cnv.Font.Handle;
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Size:=8;
Expr.Font.Name:=’Tahoma’;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
// Cnv.Font.Handle:=FOld;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
har5(Form1.Image1.Canvas,5,5,’кг//см^2′);
end;
Изменилась секция implementation
Код: Выделить всё //Раньше:
implementation
<$R *.lfm>
//Сейчас:
implementation
< TForm1 >
//То бишь — она стала пустой.
И появилась еще одна секция перед последним END. и выглядит так:
Код: Выделить всё initialization
<$I Unit1.lrs>
Почему так произошло?
И еще, при нажатии на кнопку у меня весь квадрат (Image1) черным заливается.
Я уже решал эту проблему более аккуратным написанием, но хотелось бы знать, почему так происходит?
Re: Error: identifier idents no member «Handle»
Odyssey » 10.01.2011 15:29:42
FPC версии 2.2.4 не поддерживал подключение ресурсов в стиле Delphi (<$R resourcefile>), поэтому Lazarus обходит это с помощью подключения lrs-файлов через include. Поддержка ресурсов появилась в FPC 2.4.0. Актуальная на данный момент версия FPC — 2.4.2.
Варианты: можно работать с той версией, которая есть, оставив <$I Unit1.lrs>, либо обновиться до новых Lazarus и FPC, и тогда использовать <$R *.lfm>.
Источник
Lazarus error identifier idents no member
Iv_ » 08.01.2011 23:09:11
Добрый день.
Программировать начинал с 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 ситуация такая же.
Re: Error: identifier idents no member «Handle»
Padre_Mortius » 08.01.2011 23:37:16
Re: Error: identifier idents no member «Handle»
Iv_ » 08.01.2011 23:48:46
Логично, спасибо. Но тут проблема глубже зарылась.
Там есть следующие функции типа: function BuildExpr(Expr:string):TExprClass; Они тоже дублируются.
Переменная Expr используется вообще по всему модулю в обоих файлах.
Я попробую и ее заменить, но, не уверен за результат.
Спасибо.
Если интересно, то сами модули можно скачать тут (всего 52 КБ):
http://www.delphisources.ru/pages/sourc . awing.html
Может более понятно станет.
Добавлено спустя 25 минут 36 секунд:
Прошу прощения.
Во втором файле тоже поставил режим совместимости с делфи, и лазарус ругаться на дублирование перестал.
Там же закомментировал все, что касалось наблы. добрались до своего файла с программой.
Добавлено спустя 8 минут 49 секунд:
И ещё, не подскажете, почему ругается вот на это:
Код: Выделить всё // процедура для вывода ед. изм. типа «кг/см2» курсивом
procedure har5(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
FOld: HFont;
begin
FOld:=Cnv.Font.Handle;
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Size:=8;
Expr.Font.Name:=’Tahoma’;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
Cnv.Font.Handle:=FOld;
end;
Unit1.pas(32,2) Warning: Misplaced global compiler switch
Unit1.pas(37,18) Error: Identifier not found «HFont»
Unit1.pas(37,18) Error: Error in type definition
Unit1.pas(39,19) Warning: Symbol «Handle» is deprecated
Unit1.pas(51,13) Warning: Symbol «Handle» is deprecated
Unit1.pas(51,25) Error: Incompatible type for arg no. 1: Got » «, expected «LongWord»
Unit1.pas(66) Fatal: There were 3 errors compiling module, stopping
И еще, если ставлю в своем файле режим совместимости с делфи:
вместо <$R *.lfm>ставлю <$mode Delphi>
все компилируется, но форма — пустая.
если оставляю как есть — <$R *.lfm>вылетает ошибка:
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
Unit1.pas(59,2) Error: Error while linking
Добавлено спустя 9 минут 21 секунду:
И, раз уж затронул эту тему.
Как подобные вещи должны быть написаны под Лазарусом?
Например, как сохранить старый стиль шрифта, чтобы после изменений его вернуть?
Re: Error: identifier idents no member «Handle»
Vadim » 09.01.2011 06:14:40
Это, мягко говоря, совершенно разные вещи. Их нельзя ставить одно вместо другого. К примеру, у Вас есть сковородка, чтобы жарить яишницу и вилка, чтобы эту яишницу есть. Теперь представьте, что Вы сковородку заменили вилкой и попытались изжарить на ней яишницу.
<$R *.lfm>— эта директива включает в Вашу программу ресурсный файл с описание формы. В этом файле с расширением .lfm находится описание формы и расположения на ней всех нужных программе элементов — размеры, координаты и т.п. Вы файл с описанием формы изъяли.
<$mode Delphi>— эта директива указывает компилятору режим совместимости с Delphi.
Логично предположить, что если Ваша программа должна компилироваться в режиме совместимости с Delphi и в Вашей программе используется форма с каими то элементами управления, то должны присутствовать обе директивы.
Добавлено спустя 6 минут 32 секунды:
Точно так же, как это делалось в Delphi.
Стиль шрифта — это обощённое название параметров шрифта. Следовательно, те прараметры шрифта, которые Вы изменяете, Вы должны сохранить. Например, название, размер, признак наклонности и т.п. Если Вам, впоследствии, нужно отменить изменения, то Вы считываете эти сохранённые где-нибудь (в доп. переменных или в ini-файле) параметры.
Добавлено спустя 19 минут 51 секунду:
Re: Error: identifier idents no member «Handle»
Iv_ » 09.01.2011 10:09:37
Спасибо, Vadim . Вы многое мне прояснили. Пошел все править : )
Добавлено спустя 3 часа 49 минут 45 секунд:
Ещё вопрос остался.
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
этот файл точно есть, я нашел его по поиску. Чего тут может не нравиться?
Re: Error: identifier idents no member «Handle»
Vadim » 09.01.2011 16:08:16
Re: Error: identifier idents no member «Handle»
Iv_ » 09.01.2011 16:40:22
Это все есть. Сижу и читаю про то, что вы мне объяснили.
Заодно пробую, что получится. Вот, создал тест,
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
ExtCtrls, StdCtrls, ExprDraw, ExprMake;
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Edit1: TEdit;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
private
< private declarations >
public
< public declarations >
end;
var
Form1: TForm1;
// процедура для вывода ед. изм. типа «кг/см2» курсивом
procedure har5(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
// FOld: HFont;
begin
// FOld:=Cnv.Font.Handle;
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Size:=8;
Expr.Font.Name:=’Tahoma’;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
// Cnv.Font.Handle:=FOld;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
har5(Form1.Image1.Canvas,5,5,’кг//см^2′);
end;
Ошибка про невозможность открыть файл ввиду его отсутствия осталась.
Re: Error: identifier idents no member «Handle»
Vadim » 09.01.2011 18:20:18
Re: Error: identifier idents no member «Handle»
Iv_ » 09.01.2011 20:54:25
Re: Error: identifier idents no member «Handle»
svk12 » 10.01.2011 02:14:04
Iv_ писал(а): Спасибо, Vadim . Вы многое мне прояснили. Пошел все править : )
Добавлено спустя 3 часа 49 минут 45 секунд:
Ещё вопрос остался.
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
этот файл точно есть, я нашел его по поиску. Чего тут может не нравиться?
Ваша версия FPC не поддерживает использование файлов .lfm.
Следует обновиться, например, отсюда :
ftp://ftp.freepascal.org/pub/lazarus/
Re: Error: identifier idents no member «Handle»
Iv_ » 10.01.2011 10:02:17
Re: Error: identifier idents no member «Handle»
Vadim » 10.01.2011 13:01:35
Re: Error: identifier idents no member «Handle»
Iv_ » 10.01.2011 14:16:39
Спасибо. Последовал вашему совету. Скомпилировалось.
Еще заметил пару особенностей, может поясните:
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Buttons, ExprDraw, ExprMake;
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
private
< private declarations >
public
< public declarations >
end;
var
Form1: TForm1;
// процедура для вывода ед. изм. типа «кг/см2» курсивом
procedure har5(Cnv:TCanvas; x,y:integer; s1:string);
var Expr: TExprClass;
// FOld: HFont;
begin
// FOld:=Cnv.Font.Handle;
Expr:=BuildExpr(s1);
Expr:=TExprChain.Create(Expr);
Expr.Font.Size:=8;
Expr.Font.Name:=’Tahoma’;
Expr.Canvas:=Cnv;
Expr.Draw(x,y,ehLeft,evTop);
Expr.Free;
// Cnv.Font.Handle:=FOld;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
har5(Form1.Image1.Canvas,5,5,’кг//см^2′);
end;
Изменилась секция implementation
Код: Выделить всё //Раньше:
implementation
<$R *.lfm>
//Сейчас:
implementation
< TForm1 >
//То бишь — она стала пустой.
И появилась еще одна секция перед последним END. и выглядит так:
Код: Выделить всё initialization
<$I Unit1.lrs>
Почему так произошло?
И еще, при нажатии на кнопку у меня весь квадрат (Image1) черным заливается.
Я уже решал эту проблему более аккуратным написанием, но хотелось бы знать, почему так происходит?
Re: Error: identifier idents no member «Handle»
Odyssey » 10.01.2011 15:29:42
FPC версии 2.2.4 не поддерживал подключение ресурсов в стиле Delphi (<$R resourcefile>), поэтому Lazarus обходит это с помощью подключения lrs-файлов через include. Поддержка ресурсов появилась в FPC 2.4.0. Актуальная на данный момент версия FPC — 2.4.2.
Варианты: можно работать с той версией, которая есть, оставив <$I Unit1.lrs>, либо обновиться до новых Lazarus и FPC, и тогда использовать <$R *.lfm>.
Источник
Добрый день.
Программировать начинал с Turbo Delphi Explorer, теперь решил пересесть на Lazarus.
В своих программах, для отображения листингов расчетов использовал модули ExprDraw и ExprMake, разработанные Григорьевым Антоном. Модули, в общем-то представляют собой два файла с расширением .pas (ExprDraw.pas и ExprMake.pas) и отлично отрисовывают любые формулы. В Lazarus столкнулся с некоторыми проблемами при их использовании, которые до сих пор не решены.
Изначально была вот такая ошибка:
на строчку:
| Delphi | ||
|
ExprDraw.pas(791,32) Error: Wrong number of parameters specified for call to «FontNotify»
Решилась постановкой @:
| Delphi | ||
|
Далее возникла вот такакая ошибка:
на строчку:
| Delphi | ||
|
ExprDraw.pas(818,25) Error: function header doesn’t match any method of this class «TExprClass.SetNext;»
решилась вместе с первой проблемой включением режима совместимости с Delphi:
Теперь вылазят ошибки, с которыми я не знаю. что делать… был бы поопытнее, переписал бы эти модули.
Собственно — ошибки:
В процедуре по отрисовыванию знака «набла» на строчку:
| Delphi | ||
|
ExprDraw.pas(3741,48) Error: identifier idents no member «Handle»
пробовал заккоментировать все, что связано с «набла», т.к. мне она не нужна, но получил следующее:
В описании:
| Delphi | ||
|
ExprMake.pas(12,44) Error: Duplicate identifier «S»
Вроде действительно — дублируется, но в Delphi это все работало… Помогите разобраться, пожалуйста.
У меня Lazarus 0.9.28.2 бета fpc 2.2.4
Добавлено через 13 часов 47 минут
Прошу прощения.
Во втором файле тоже поставил режим совместимости с делфи, и лазарус ругаться на дублирование перестал.
Там же закомментировал все, что касалось наблы. добрались до своего файла с программой.
теперь ещё проблема вылезла:
| Delphi | ||
|
Unit1.pas(32,2) Warning: Misplaced global compiler switch
Unit1.pas(37,18) Error: Identifier not found «HFont»
Unit1.pas(37,18) Error: Error in type definition
Unit1.pas(39,19) Warning: Symbol «Handle» is deprecated
Unit1.pas(51,13) Warning: Symbol «Handle» is deprecated
Unit1.pas(51,25) Error: Incompatible type for arg no. 1: Got «<erroneous type>», expected «LongWord»
Unit1.pas(66) Fatal: There were 3 errors compiling module, stopping
И еще, если ставлю в своем файле режим совместимости с делфи:
вместо
{$R *.lfm} ставлю {$mode Delphi}
все компилируется, но форма — пустая.
если оставляю как есть — {$R *.lfm} вылетает ошибка:
c:lazarus0928fpc2.2.4bini386-win32windres.exe: can’t open file `TForm1′: No such file or directory
Unit1.pas(59,2) Error: Error while linking
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
В этом разделе описаны все сообщения, которые могут случиться при обработке символов, то сеть все, что происходит при обработке имён процедур и переменных.
|
Сообщение |
Описание |
|---|---|
|
Error: Identifier not found «Сообщение» |
Компилятору неизвестен этот символ. Обычно появляется, когда вы делаете орфографическую ошибку в имени переменной или процедуры, или если вы забыли объявить переменную. |
|
Fatal: Internal Error in SymTableStack() |
Внутренняя ошибка произошла в компиляторе. Если вы обнаружите такую ошибку, пожалуйста, контактируйте с разработчиками и попытайтесь предоставить точное описание обстоятельств, при которых произошла эта ошибка. |
|
Error: Duplicate identifier «Сообщение» |
Идентификатор уже был объявлен в текущей области видимости. |
|
Hint: Identifier already defined in Сообщ1 at line Сообщ2 |
Идентификатор уже был объявлен в предыдущей области видимости. |
|
Error: Unknown identifier «Сообщение» |
Обнаружен необъявленный идентификатор, или он используется за пределами области видимости, где он был объявлен. |
|
Error: Forward declaration not solved «Сообщение» |
Это может произойти в двух случаях: •Вы объявили функцию в интерфейсной части, или с директивой forward, но не определили её в исполняемой части. •Вы ссылаетесь на тип, который не объявлен в текущем блоке type. |
|
Error: Error in type definition |
Это ошибка в определении нового типа массива. Один из разделителей диапазона в массиве объявлен неправильно. Например, Array [1..1.25] вызовет эту ошибку, так как в индексах массивов могут быть только порядковые типы, а 1.25 – это вещественный тип. |
|
Error: Forward type not resolved «Сообщение» |
Символ был предварительно определён, но его объявление не было найдено. |
|
Error: Only static variables can be used in static methods or outside methods |
Статический метод объекта может быть доступен только статическим переменным. |
|
Fatal: record or class type expected |
Переменная или выражение не являются типом record или class. |
|
Error: Instances of classes or objects with an abstract method are not allowed |
Вы пытаетесь создать экземпляр класса, который имеет не перегружаемые абстрактные методы. |
|
Warning: Label not defined «Сообщение» |
Метка была объявлена, но не определена. |
|
Error: Label used but not defined «Сообщение» |
Метка была объявлена и использована, но не определена. |
|
Error: Illegal label declaration |
Эта ошибка не должна никогда появляться. Это случается, если метка определена вне процедуры или функции. |
|
Error: GOTO and LABEL are not supported (use switch -Sg) |
Вы должны использовать опцию -Sg для компиляции программы, которая имеет метки и операторы goto. По умолчанию label (метка) и goto не поддерживаются. |
|
Error: Label not found |
Было обнаружено goto Метка, но метка не была объявлена. |
|
Error: identifier isn’t a label |
Идентификатор, указанный после goto, не является меткой. |
|
Error: label already defined |
Вы определили метку дважды. Вы можете определить метку только один раз. |
|
Error: illegal type declaration of set elements |
Объявление множества содержит неправильное определение типа. |
|
Error: Forward class definition not resolved «Сообщение» |
Вы объявили класс, но не определили его. |
|
Hint: Unit «Сообщ1» not used in Сообщ2 |
Модуль, на который есть ссылка в разделе uses, не используется. |
|
Hint: Parameter «Сообщение» not used |
Идентификатор был объявлен (локально или глобально), но не был использован (локально или глобально). |
|
Note: Local variable «Сообщение» not used |
Вы объявили, но не использовали переменную в процедуре или функции. |
|
Hint: Value parameter «Сообщение» is assigned but never used |
Идентификатор был объявлен (локально или глобально) и ему было присвоено значение, но после этого он не используется (локально или глобально). |
|
Note: Local variable «Сообщение» is assigned but never used |
Переменная в процедуре или функции объявлена и ей присвоено значение, но после этого она не используется. |
|
Hint: Local Сообщ1 «Сообщ2» is not used |
Локальный идентификатор не используется. |
|
Note: Private field «Сообщ1.Сообщ2» is never used |
Указанное приватное поле определено, но никогда не используется в коде. |
|
Note: Private field « Сообщ1.Сообщ2» is assigned but never used |
Указанное приватное поле определено и ему присвоено значение, но оно никогда не читается. |
|
Note: Private method « Сообщ1.Сообщ2» never used |
Указанный приватный метод определен, но никогда не используется в коде. |
|
Error: Set type expected |
Переменная или выражение не являются множеством. Это случается при использовании оператора in. |
|
Warning: Function result does not seem to be set |
Вы можете получить это предупреждение, если компилятор думает, что функция возвращает значение, которое не является множеством. Это не отображается для ассемблерных процедур или процедур, которые содержат ассемблерные блоки. |
|
Warning: Type «Сообщение» is not aligned correctly in current record for C |
Массивы С, размер которых не кратен 4, будут выровнены для С— структур. |
|
Error: Unknown record field identifier «Сообщение» |
Поле не существует в определении записи/объекта. |
|
Warning: Local variable «Сообщение» does not seem to be initialized |
Это сообщение отображается, если компилятор думает, что локальная переменная будет использована (то есть появится в правой части выражения) до того, как она была инициализирована (то есть до того, как она появилась в левой части оператора присваивания). |
|
Warning: Variable «Сообщение» does not seem to be initialized |
Это сообщение отображается, если компилятор думает, что переменная будет использована (то есть появится в правой части выражения) до того, как она была инициализирована (то есть до того, как она появилась в левой части оператора присваивания). |
|
Error: identifier idents no member «Сообщение» |
Эта ошибка генерируется, если с идентификатором записи, поля или метода выполняется присваивание, в то время как он не определён. |
|
Hint: Found declaration: Сообщение |
Вы получите это сообщение, если используете опцию -vh. В случае перегрузки процедуры, которая не была найдена. В сообщении будут перечислены все кандидаты перегружаемых процедур со списком их параметров. |
|
Error: Data element too large |
Вы получите это сообщение, если вы объявили элемент с данными, размер которых превышает принятый лимит (2 Гб для процессоров 80386+/68020+). |
|
Error: No matching implementation for interface method «Сообщение» found |
Найден метод, который не соответствует методу интерфейса. Проверьте типы аргументов и тип результата методов. |
|
Warning: Symbol «Сообщение» is deprecated |
Это означает, что используется идентификатор (переменная, процедура и т.п.), который объявлен deprecated. Идентификаторы deprecated могут уже не быть доступными в новых версиях модуля/библиотеки. Избегайте использовать эти идентификаторы, насколько это возможно. |
|
Warning: Symbol «Сообщение» is not portable |
Это означает, что используется идентификатор (переменная, процедура и т.п.), который объявлен platform. Значение этого идентификатора зависит от платформы и не должно использоваться, если исходный код должен быть переносимым. |
|
Warning: Symbol «Сообщение» is not implemented |
Это означает, что используется идентификатор (переменная, процедура и т.п.), который объявлен unimplemented. Этот идентификатора определён, но уже не выполняется на указанной платформе. |
|
Error: Can’t create unique type from this type |
Только простые типы, такие как порядковые, вещественные и строки поддерживаются, если тип переопределён с помощью type НовыйТип = type СтарыйТип;. |
|
Hint: Local variable «Сообщение» does not seem to be initialized |
Это сообщение появляется, если компилятор думает, что локальная переменная будет использована (то есть появится в правой части выражения), в то время как она ещё не инициализирована (то есть не появлялась в левой части присваивания). |
|
Hint: Variable «Сообщение» does not seem to be initialized |
Это сообщение появляется, если компилятор думает, что переменная будет использована (то есть появится в правой части выражения), в то время как она ещё не инициализирована (то есть не появлялась в левой части присваивания). |
|
Warning: Function result variable does not seem to initialized |
Это сообщение появляется, если компилятор думает, что переменная результата функции будет использована (то есть появится в правой части выражения) перед её инициализацией (то есть перед тем, как она появится в левой части присваивания). |
|
Hint: Function result variable does not seem to be initialized |
Это сообщение появляется, если компилятор думает, что переменная результата функции будет использована (то есть появится в правой части выражения) перед её инициализацией (то есть перед тем, как она появится в левой части присваивания). |
|
Warning: Variable «Сообщение» read but nowhere assigned |
Вы прочитали значение переменной, но нигде не присвоили ей значение. |
|
Hint: Found abstract method: Сообщение |
Когда выводится предупреждение о создании класса/объекта с абстрактными методами, вы получаете эту подсказку, которая поможет вам найти неправильный метод. |
|
Warning: Symbol «Сообщение» is experimental |
Это означает, что используется идентификатор (переменная, процедура и т.п.), который объявлен как experimental. Экспериментальные идентификаторы могут быть удалены или изменят семантику в будущих версиях. Избегайте использовать эти идентификаторы, насколько это возможно. |
|
Warning: Forward declaration «Сообщение» not resolved, assumed external |
Это сообщение появляется, если вы объявили функцию в интерфейсе модуля в режиме macpas, не выполнили её. |
|
Warning: Symbol «Сообщение» is belongs to a library |
Это означает, что используется идентификатор (переменная, процедура и т.п.), который объявлен как library. Такие идентификаторы могут быть недоступны в других библиотеках. |
|
Warning: Symbol «Сообщ1» is deprecated: «Сообщ2» |
Это означает, что используется идентификатор (переменная, процедура и т.п.), который объявлен как deprecated. Такие идентификаторы могут быть недоступны в будущих версиях модуля/библиотеки. Избегайте использовать эти идентификаторы, насколько это возможно. |
|
Error: Cannot find an enumerator for the type «Сообщение» |
Это означает, что компилятор не может найти соответствующий нумератор для использования в цикле for. Для создания нумератора вам необходимо определить оператор нумератора или добавить метод public или published GetEnumerator для класса или объекта. |
|
Error: Cannot find a «MoveNext» method in enumerator «Сообщение» |
Это означает, что компилятор не может найти метод public MoveNext с возвращаемым типом Boolean в классе нумератора или объекте. |
|
Error: Cannot find a «Current» property in enumerator «Сообщение» |
Это означает, что компилятор не может найти свойство public Current с возвращаемым типом в классе нумератора или объекте. |
|
Error: Mismatch between number of declared parameters and number of colons in message string. |
In Objective-C, a message name automatically contains as many colons as parameters. In order to prevent mistakes when specifying the message name in FPC, the compiler checks whether this is also the case here. Note that in case of messages taking a variable number of arguments translated to FPC via an array of const parameter, this final array of const parameter is not counted. Neither are the hidden self and _cmd parameters. |
|
Note: Private type ”arg1.arg2” never used |
The indicated private type is declared but is never used in the code. |
|
Note: Private const ”arg1.arg2” never used |
The indicated private const is declared but is never used in the code. |
|
Note: Private property ”arg1.arg2” never used |
The indicated private property is declared but is never used in the code. |
|
Warning: Unit ”arg1” is deprecated |
This means that a unit which is declared as deprecated is used. Deprecated units may no longer be available in newer versions of the library. Use of this unit should be avoided as much as possible. |
|
Warning: Unit ”arg1” is deprecated: ”arg2” |
This means that a unit which is declared as deprecated is used. Deprecated units may no longer be available in newer versions of the library. Use of this unit should be avoided as much as possible. |
|
Warning: Unit ”arg1” is not portable |
This means that a unit which is declared as platform is used. This unit use and availability is platform specific and should not be used if the source code must be portable. |
|
Warning: Unit ”arg1” is belongs to a library |
This means that a unit which is declared as library is used. Library units may not be available in other libraries. |
|
Warning: Unit ”arg1” is not implemented |
This means that a unit which is declared as unimplemented is used. This unit is defined, but is not yet implemented on this specific platform. |
|
Warning: Unit ”arg1” is experimental |
This means that a unit which is declared as experimental is used. Experimental units might disappear or change semantics in future versions. Usage of this unit should be avoided as much as possible. |
|
Error: No complete definition of the formally declared objcclass ”arg1” is in scope |
Objecive-C classes can be imported formally, without using the the unit in which it is fully declared. This enables making forward references to such classes and breaking circular dependencies amongst units. However, as soon as you wish to actually do something with an entity of this class type (such as access one of its fields, send a message to it, or use it to inherit from), the compiler requires the full definition of the class to be in scope. |
|
Error: Gotos into initialization or finalization blocks of units are not allowed |
Gotos into initialization or finalization blockse of units are not allowed. |
|
Error: Invalid external name ”arg1” for formal class ”arg2” |
|
|
Error: Complete class definition with external name ”arg1” here |
When a class is declared using a formal external definition, the actual external definition (if any) must specify the same external name as the formal definition (since both definitions refer to the same actual class type). |
|
Warning: Possible library conflict: symbol ”arg1” from library ”arg2” also found in library ”arg3” |
Some OS do not have library specific namespaces, for those OS, the function declared as ”external ’libname’ name ’funcname’”, the ’libname’ part is only a hint, funcname might also be loaded by another library. This warning appears if ’funcname’ is used twice with two different library names. |
Open
Issue created May 03, 2020 by
Lazarus fails to build on macOS after r63109
Original Reporter info from Mantis: trev @trevoz
-
Reporter name: Trevor Roydhouse
Description:
Lazarus: r63113
FPC: r44876
#!/bin/sh
svn cleanup —remove-unversioned
make distclean all LCL_PLATFORM=cocoa CPU_TARGET=x86_64 bigide
cocoawsstdctrls.pas(495,60) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1053,10) Warning: Class types «NSTextField» and «NSTextField_LCLExt» are not related
cocoawsstdctrls.pas(1085,11) Warning: Class types «NSTextDelegateProtocol» and «NSObject» are not related
cocoawsstdctrls.pas(1790,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1831,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1849,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1865,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1877,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1892,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(1904,22) Error: Identifier idents no member «ReadOnly»
cocoawsstdctrls.pas(2297) Fatal: There were 8 errors compiling module, stopping
Fatal: Compilation aborted
make[3]: *** [../lcl.ppu] Error 1
make[2]: *** [cocoa_all] Error 2
make[1]: *** [interfaces] Error 2
make: *** [lcl] Error 2
Steps to reproduce:
Attempt to compile Lazarus IDE after r63109.
Additional information:
Looks like the following commits cause the problem:
Code: [Select]
————————————————————————
r63112 | juha | 2020-05-03 00:13:43 +1000 (Sun, 03 May 2020) | 1 line
LCL: Remove also public property TCustomComboBox.ReadOnly.
————————————————————————
r63111 | juha | 2020-05-02 20:51:09 +1000 (Sat, 02 May 2020) | 1 line
Assertions to debug issue #36318 (closed).
————————————————————————
r63110 | juha | 2020-05-02 07:12:54 +1000 (Sat, 02 May 2020) | 1 line
LCL: Remove deprecated TComboBox.ReadOnly.
————————————————————————
Mantis conversion info:
- Mantis ID: 37009
- OS: macOS
- OS Build: 10.14.6
- Platform: Apple 2018 Mac mini
- Version: 2.1 (SVN)
- Fixed in revision: 63115 (#56f22cd0)
- Monitored by: » @trevoz (Trevor Roydhouse)
|
|
|
|
Hi. The line that have the error is GoalScene.Cameras.AddNewChild(TGLCamera);. uses
Windows, SysUtils, Classes, Controls, Forms,
GLScene, StdCtrls, Dialogs, Menus, IniFiles, ImgList,
{GLWin32Viewer, GLMisc,} GLObjects, ComCtrls, Graphics,
ExtCtrls, ToolWin, FileUtil, Shellapi, Field, HTTPSend, GLLCLViewer;
public
{ Public declarations }
PlayField1:TPlayField;
GoalScene:TGLScene;
(...)
I wait that someone help me. |
|
|
Please Log in or Create an account to join the conversation. |
|
I found the bug. |
|
|
Please Log in or Create an account to join the conversation. |
|
GLScene version of CodeTyphon 1.70 is the latest from SVN Sir PilotLogic Architect and Core Programmer |
|
|
Please Log in or Create an account to join the conversation. |
|
Just the last stable version have this class yet as you can see at the file that I atach. |
|
|
Please Log in or Create an account to join the conversation. |
|
We use SVN versions Sir Oh, Delphi is a «mummy» PilotLogic Architect and Core Programmer |
|
|
Please Log in or Create an account to join the conversation.
|
|
I use it. |
|
|
Please Log in or Create an account to join the conversation. |
|
|
|

