Error in type definition lazarus

В этом разделе описаны все ошибки, которые могут случиться при проверке типов.

В этом разделе описаны все ошибки, которые могут случиться при проверке типов.

Сообщение

Описание

Error: Type mismatch

Это может произойти во многих случаях:

Назначенная вами переменная отличается от типа, который используется в выражении

Вы вызываете функцию или процедуру с параметрами, которые несовместимы с параметрами в объявлении функции или процедуры

Error: Incompatible types: got «Сообщ1» expected «Сообщ2»

Невозможно преобразование между двумя типами. Ещё одна причина – типы объявлены в разных объявлениях:

Var A1 : Array[1..10] Of Integer;
  A2 : Array[1..10] Of Integer;
Begin
A1:=A2; {Этот оператор также даёт такую ошибку, потому
          что выполняется строгая проверка типов Pascal}
End.

Error: Type mismatch between «Сообщ1» and «Сообщ2»

Типы не являются эквивалентными.

Error: Type identifier expected

Идентификатор не является типом, или вы забыли указать идентификатор type.

Error: Variable identifier expected

Это случается, если вы помещаете константу в процедуру (такую как Inc или Dec), в то время как процедура требует переменной. Для таких процедур в качестве параметров можно помещать только переменные.

Error: Integer expression expected, but got «Сообщение»

Компилятор ожидает выражения типа integer, но получает другой тип.

Error: Boolean expression expected, but got «Сообщение»

Выражение должно быть типа boolean. Оно должно возвращать True или False.

Error: Ordinal expression expected

Выражение должно быть порядкового типа, то есть максимум типа Longint. Эта ошибка случается, например, если вы указали второй параметр процедуры Inc или Dec, который не соответствует порядковому типу.

Error: pointer type expected, but got «Сообщение»

Переменная или выражения не являются указателем. Это случается, если вы помещаете переменную, которая не является указателем, в New или Dispose.

Error: class type expected, but got «Сообщение»

Переменная или выражение не являются типом class. Это обычно случается, если

1.Родительский класс в объявлении класса не является классом

2.Обработчик исключения (On) cсодержит идентификатор типа, который не является классом.

Error: Can’t evaluate constant expression

Эта ошибка может случиться, если границы объявленного вами массива не обозначены порядковыми константами.

Error: Set elements are not compatible

Вы пытаетесь выполнить операцию с двумя множествами, в то время как типы элементов этих множеств не являются одинаковыми. Базовые типы множеств должны быть одинаковыми при объединении.

Error: Operation not implemented for sets

Некоторые бинарные операторы не определены для множеств. Это операторы: div, mod, **, >= и <=. Последние два могут быть определены для множеств в будущих версиях.

Warning: Automatic type conversion from floating type to COMP which is an integer type

Обнаружено явное преобразование типов из real в comp. s encountered. Поскольку comp – это 64-битное целое число, то это может вызвать ошибку.

Hint: use DIV instead to get an integer result

Если подсказки включены, то целочисленное деление с оператором ‘/‘ приведёт к этому сообщению, потому что результатом будет вещественный тип.

Error: string types doesn’t match, because of $V+ mode

Если выполняется компиляция в режиме {$V+}, то строка, передаваемая вами в качестве параметра, должна быть точно такого же типа, как параметр процедуры.

Error: succ or pred on enums with assignments not possible

Если вы объявили перечисляемый тип в стиле С, например, так:

Tenum = (a,b,e:=5);

То вы не сможете использовать функции Succ или Pred с этим перечислением.

Error: Can’t read or write variables of this type

Вы пытаетесь прочитать или записать переменную из файла или в файл текстового типа, который не поддерживает тип переменной. Только целочисленные типы, вещественные, pchars и strings можно читать из файла или записывать в текстовый файл. Логические переменные можно только записывать в текстовый файл.

Error: Can’t use readln or writeln on typed file

readln и writeln можно использовать только с текстовыми файлами.

Error: Can’t use read or write on untyped file.

read и write допускаются только для текстовых или типизированных файлов.

Error: Type conflict between set elements

Это означает, что не менее одного элемента множества имеют неправильный тип.

Warning: lo/hi(dword/qword) returns the upper/lower word/dword

Free Pascal поддерживает перегруженную версию lo/hi для longint/dword/int64/qword, которые возвращают наименьшее/наибольшее (результат типа слово/двойное слово) значение аргумента. Turbo Pascal позволяет использовать 16-битные lo/hi, которые возвращают биты 0..7 для lo и биты 8..15 для hi. Если вы хотите получить поведение, аналогичное Turbo Pascal, вы должны использовать приведение типов к word или integer.

Error: Integer or real expression expected

Первый аргумент для str должен быть типа real или integer.

Error: Wrong type «Сообщение» in array constructor

Вы пытаетесь использовать тип в конструкторе массива, который недопустим.

Error: Incompatible type for arg no. Сообщ1: Got «Сообщ2», expected «Сообщ3»

Вы пытаетесь передать неправильный тип в указанный параметр.

Error: Method (variable) and Procedure (variable) are not compatible

Вы не можете связать метод с процедурной переменной или процедуру с указателем на метод.

Error: Illegal constant passed to internal math function

Аргумент-константа, переданный в функцию ln или sqrt выходит за пределы диапазона для этой функции.

Error: Can’t take the address of constant expressions

Невозможно получить адрес выражения-константы, потому что оно не записывается в память. Вы можете попробовать сделать типизированную константу. Эта ошибка может также появиться, если вы пытаетесь поместить свойство в параметр var.

Error: Argument can’t be assigned to

Только выражение, которое может быть в левой части присваивания, может быть передано как вызов по ссылке аргумента. Примечание: Свойства могут использоваться в левой части присваивания, тем не менее, они не могут использоваться как аргументы.

Error: Can’t assign local procedure/function to procedure variable

Не допускается присваивать локальные процедуры/функции процедурным переменным, потому что соглашение о вызовах локальных процедур/функций отличаются. Вы можете только присвоить локальную процедуру/функцию пустому указателю.

Error: Can’t assign values to an address

Не допускается присваивать значение адресу переменной, константы, процедуры или функции. Вы можете попытаться выполнить компиляцию с опцией -So, если идентификатор является процедурной переменной.

Error: Can’t assign values to const variable

Не допускается присваивать значение переменной, которая объявлена как константа. Обычно параметр объявляется как константа. Чтобы иметь возможность изменять значение, передавайте параметр по значению или параметр по ссылке (используя var).

Error: Array type required

Если вы хотите получить доступ к переменной, используя индекс ‘[<x>]‘, то тип должен быть массивом. В режиме FPC указатель также допускается.

Error: interface type expected, but got  «»Сообщение»

Компилятор ожидал для нумератора имя типа интерфейса, но получил нечто другое. Следующий код приведёт к этой ошибке:

Type
TMyStream = Class(TStream,Integer)

Hint: Mixing signed expressions and longwords gives a 64bit result

Если вы делите (или вычисляете модуль) выражения со знаком с типом longword (или наоборот), или если вы имеете переполнение и/или включена проверка диапазона и используется арифметическое выражение (+, -, *, div, mod), в котором оба числа со знаком и появляется longwords, то всё это вычисляется как 64-битная арифметическая операция, которая медленнее, чем обычная 32-битная. Вы можете избежать этого при помощи преобразования типа одного из операндов в подходящий для результата и другого операнда.

Warning: Mixing signed expressions and cardinals here may cause a range check error

Если вы используете бинарный оператор (and, or, xor) и один из операндов — это longword, в то время как другой – это выражение со знаком, то, если проверка диапазона включена, вы можете получить ошибку проверки диапазона, потому что в этом случае оба операнда преобразуются в longword перед выполнением операции. Вы можете избежать этого при помощи преобразования типа одного из операндов в подходящий для результата и другого операнда.

Error: Typecast has different size (Сообщ1 -> Сообщ2) in assignment

Преобразование типа при отличающихся размерах не допускается, когда переменная используется в присваивании.

Error: enums with assignments can’t be used as array index

Если вы объявили перечисляемый тип, который имеет С-подобные присваивания, как показано ниже:

Tenum = (a,b,e:=5);

Вы не можете использовать его как индекс массива.

Error: Class or Object types «Сообщ1» and «Сообщ2» are not related

Выборка из одного класса в другой, в то время как класс/объект не являются связанными. Вероятно, это ошибка ввода.

Warning: Class types «arg1» and «arg2» are not related

Выборка из одного класса в другой, в то время как класс/объект не являются связанными. Вероятно, это ошибка ввода.

Error: Class or interface type expected, but got «arg1»

Компилятор ожидал имя класса или интерфейса, но получил другой тип или идентификатор.

Error: Type «Сообщение» is not completely defined

Эта ошибка случается, если тип не завершён, например, тип pointer, который указывает на неопределённый тип.

Warning: String literal has more characters than short string length

Размер строки-константы, которая связана с shortstring, больше максимального размера для shortstring (255 символов).

Warning: Comparison is always false due to range of values

Это сравнение беззнакового значения и константы со знаком, которая меньше нуля. По причине преобразования оператор всегда будет возвращать FALSE. Выполните явное преобразование константы в правильный диапазон, чтобы избежать этой проблемы.

Warning: Comparison is always true due to range of values

Это сравнение беззнакового значения и константы со знаком, которая меньше нуля. По причине преобразования оператор всегда будет возвращать TRUE. Выполните явное преобразование константы в правильный диапазон, чтобы избежать этой проблемы.

Warning: Constructing a class «Сообщ1» with abstract method «Сообщ2»

Например, создаваемый класс содержит неисполняемые абстрактные методы. Имеется вероятность, что случится ошибка времени исполнения 211 в коде, если эта процедура будет когда-либо вызвана. Все абстрактные методы должны быть перегружаемыми.

Hint: The left operand of the IN operator should be byte sized

Левый операнд в операторе IN не является порядковым или перечислением, который помещается в 8 бит. Это может привести к ошибке проверки диапазона. На текущий момент оператор in поддерживает левый оператор только в пределах байта. В случае с перечислениями, размер элемента перечисления может изменяться опциями {$PACKENUM} или {$Zn}.

Warning: Type size mismatch, possible loss of data / range check error

Это случается, когда меньшему типу присваивается значение, большее, чем исходный тип. Это означает, что может произойти ошибка проверки диапазона или уменьшение значения.

Hint: Type size mismatch, possible loss of data / range check error

Это случается, когда меньшему типу присваивается значение, большее, чем исходный тип. Это означает, что может произойти ошибка проверки диапазона или уменьшение значения.

Error: The address of an abstract method can’t be taken

Не найдено тело абстрактного метода, поэтому адрес абстрактного метода не может быть назначен.

Error: Assignments to formal parameters and open arrays are not possible

Вы пытаетесь присвоить значение формальному параметру (нетипизированный var, const или out), или открытому массиву.

Error: Constant Expression expected

Компилятор ожидал выражение-константу, но получил выражение- переменную.

Error: Operation «Сообщ1» not supported for types «Сообщ2» and «Сообщ3»

Операция не допускается для указанных типов.

Error: Illegal type conversion: «Сообщ1» to «Сообщ2»

Когда выполняете преобразование типов, вы должны понимать, что размеры переменной и типа назначения одинаковы.

Hint: Conversion between ordinals and pointers is not portable

Если вы преобразуете тип pointer в longint (или наоборот), то код не будет компилироваться на машинах, использующих 64-разрядную адресацию.

Warning: Conversion between ordinals and pointers is not portable

Если вы преобразуете тип pointer в порядковый тип с другим размером (или наоборот), то могут возникнуть проблемы. Это предупреждение помогает в поиске 32-битного специального кода, где cardinal/longint используются для преобразования указателей в порядковые типы. Решением проблемы является использование вместо этого типов ptrint/ptruint.

Error: Can’t determine which overloaded function to call

Вы вызываете перегруженную функцию с параметром, который не связан с каким-либо объявленным списком параметров, например, когда вы имеете объявленную функцию с параметрами word и longint, а затем вызываете её с параметром типа integer.

Error: Illegal counter variable

Переменная для цикла for должна быть порядкового типа. Переменные циклов не могут быть вещественными числами или строками.

Warning: Converting constant real value to double for C variable argument, add explicit typecast to prevent this.

В C значения вещественных констант по умолчанию имеют тип double. Из этих соображений, когда вы передаёте вещественную константу в функцию С в качестве параметра, компилятор FPC по умолчанию преобразует её в тип double. Если вы хотите контролировать этот процесс, добавьте для константы явное преобразование в нужный тип.

Error: Class or COM interface type expected, but got «Сообщение»

Некоторые операторы, такие как AS, применяются только для классов или COM-интерфейсов.

Error: Constant packed arrays are not yet supported

Вы не можете объявить битовый (упакованный) массив как типизированную константу.

Error: Incompatible type for arg no. Сообщ1: Got «Сообщ2» expected «(Bit)Packed Array»

Компилятор ожидает битовый (упакованный) массив как указанный параметр.

Error: Incompatible type for Сообщение no. Сообщ1: Got «Сообщ2» expected «»(not packed) Array»

Компилятор ожидает регулярный (то есть НЕ упакованный) массив как указанный параметр.

Error: Elements of packed arrays cannot be of a type which need to be initialised

Поддержка упакованных массивов, которым необходима инициализация (таких как ansistrings, или записей, содержащих ansistrings), пока не реализована.

Error: Constant packed records and objects are not yet supported

Вы не можете объявить битовый (упакованный) массив как типизированную константу в данное время.

Warning: Arithmetic «Сообщение» on untyped pointer is unportable to {$T+}, suggest typecast

Сложение/вычитание из нетипизированных указателей может работать по разному в {$T+}. Используёте преобразование типов для типизированных указателей.

Error: Can’t take address of a subroutine marked as local

Нельзя получить адрес подпрограммы, помеченной как локальная.

Error: Can’t export subroutine marked as local from a unit

Подпрограмма, помеченная как локальная, не может быть экспортирована из модуля.

Error: Type is not automatable: «Сообщение»

Только byte, integer, longint, smallint, currency, single, double, ansistring, widestring, tdatetime, variant, olevariant, wordbool и все интерфейсы являются automatable.

Hint: Converting the operands to «Сообщение» before doing the add could prevent overflow errors.

Сложение двух типов может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед сложением.

Hint: Converting the operands to «Сообщение» before doing the subtract could prevent overflow errors.

Вычитание между двумя типами может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед вычитанием.

Hint: Converting the operands to «Сообщение» before doing the multiply could prevent overflow errors.

Умножение между двумя типами может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед умножением.

Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned

Виртуальное адресное пространство на виртуальных машинах располагается от $00000000 до $ffffffff. Многие операционные системы позволяют выделять память с адресами выше $80000000. Например, как WINDOWS, так и LINUX, допускают использование указателей в диапазоне от $0000000 до $bfffffff. Если вы преобразуете типы со знаком, это может вызвать ошибки переполнения и проверки диапазона, но также $80000000 < $7fffffff. Это может вызвать случайную ошибку в коде, подобно этому: «if p>q».

Error: Interface type Сообщение has no valid GUID

Если применяется оператор as для интерфейса или класса, то интерфейс (то есть правый операнд оператора as) должен иметь правильный GUID.

Error: Invalid selector name

Селектор Objective-C не может быть пустым, он должен быть правильным идентификатором или одинарным двоеточием, а если он содержит менее одного двоеточия, он также должен быть завершён.

Error: Expected Objective-C method, but got Сообщение

Селектор может быть создан только для методов Objective-C, не для любых других процедур/функций/методов.

Error: Expected Objective-C method or constant method name

Селектор может быть создан только для методов Objective-C, при задании имени используются строковые константы или идентификатор метода Objective-C, который является видимым из текущей области видимости.

Error: No type info available for this type

Информация о типах не генерируется для некоторых типов, таких как перечисления с пропусками в их диапазоне значений (включая перечисления, нижняя граница которых отлична от нуля).

Error: Ordinal or string expression expected

The expression must be an ordinal or string type.

Error: String expression expected

The expression must be a string type.

Warning: Converting 0 to NIL

Use NIL rather than 0 when initialising a pointer.

Error: Objective-C protocol type expected, but got ”arg1”

The compiler expected a protocol type name, but found something else.

Error: The type ”arg1” is not supported for interaction with the Objective-C runtime

Objective-C makes extensive use of run time type information (RTTI). This format is defined by the maintainers of the run time and can therefore not be adapted to all possible Object Pascal types. In particular, types that depend on reference counting by the compiler (such as ansistrings and certain kinds of interfaces) cannot be used as fields of Objective-C classes, cannot be directly passed to Objective-C methods, and cannot be encoded using objc_encode.

Error: Class or objcclass type expected, but got ”arg1”

It is only possible to create class reference types of class and objcclass

Error: Objcclass type expected

The compiler expected an objcclass type

Warning: Coerced univ parameter type in procedural variable may cause crash or memory corruption: arg1 to arg2

univ parameters are implicitly compatible with all types of the same size, also in procedural variable definitions. That means that the following code is legal, because single and longint have the same size:

{$mode macpas}

Type

  TIntProc = procedure (l: univ longint);

  procedure test(s: single);

    begin

      writeln(s);

    end;

  var

    p: TIntProc;

  begin

    p:=test;

    p(4);

  end.

This code may however crash on platforms that pass integers in registers and floating point values on the stack, because then the stack will be unbalanced. Note that this warning will not flagg all potentially dangerous situations. when test returns.

Error: Type parameters of specializations of generics cannot reference the currently specialized type

Recursive specializations of generics like Type MyType = specialize MyGeneric<MyType>; are not possible.

Error: Type parameters are not allowed on non-generic class/record/object procedure or function

Type parameters are only allowed for methods of generic classes, records or objects

Error: Generic declaration of ”arg1” differs from previous declaration

Generic declaration does not match the previous declaration

Error: Helper type expected

The compiler expected a class helper type.

Error: Record type expected

The compiler expected a record type.

Error: Derived class helper must extend a subclass of ”arg1” or the class itself

If a class helper inherits from another class helper the extended class must extend either the same class as the parent class helper or a subclass of it

Error: Derived record helper must extend ”arg1”

If a record helper inherits from another record helper it must extend the same record that the parent record helper extended.

(*) С5. Символьная обработка

В этом разделе описаны все сообщения, которые могут случиться при обработке символов, то сеть все, что происходит при обработке имён процедур и переменных.

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.

Источник

(*) С4. Ошибки проверки типов

В этом разделе описаны все ошибки, которые могут случиться при проверке типов.

Error: Type mismatch

Это может произойти во многих случаях:

• Назначенная вами переменная отличается от типа, который используется в выражении

• Вы вызываете функцию или процедуру с параметрами, которые несовместимы с параметрами в объявлении функции или процедуры

Error: Incompatible types: got «Сообщ1» expected «Сообщ2»

Невозможно преобразование между двумя типами. Ещё одна причина – типы объявлены в разных объявлениях:

Var A1 : Array [1..10] Of Integer;
A2 : Array [1..10] Of Integer;
Begin
A1:=A2; <Этот оператор также даёт такую ошибку, потому
что выполняется строгая проверка типов Pascal>
End .

Error: Type mismatch between «Сообщ1» and «Сообщ2»

Типы не являются эквивалентными.

Error: Type identifier expected

Идентификатор не является типом, или вы забыли указать идентификатор type .

Error: Variable identifier expected

Это случается, если вы помещаете константу в процедуру (такую как Inc или Dec ), в то время как процедура требует переменной. Для таких процедур в качестве параметров можно помещать только переменные.

Error: Integer expression expected, but got «Сообщение»

Компилятор ожидает выражения типа integer , но получает другой тип.

Error: Boolean expression expected, but got «Сообщение»

Выражение должно быть типа boolean . Оно должно возвращать True или False .

Error: Ordinal expression expected

Выражение должно быть порядкового типа, то есть максимум типа Longint . Эта ошибка случается, например, если вы указали второй параметр процедуры Inc или Dec , который не соответствует порядковому типу.

Error: pointer type expected, but got «Сообщение»

Переменная или выражения не являются указателем. Это случается, если вы помещаете переменную, которая не является указателем, в New или Dispose .

Error: class type expected, but got «Сообщение»

Переменная или выражение не являются типом class . Это обычно случается, если

1. Родительский класс в объявлении класса не является классом

2. Обработчик исключения ( On ) cсодержит идентификатор типа, который не является классом.

Error: Can’t evaluate constant expression

Эта ошибка может случиться, если границы объявленного вами массива не обозначены порядковыми константами.

Error: Set elements are not compatible

Вы пытаетесь выполнить операцию с двумя множествами, в то время как типы элементов этих множеств не являются одинаковыми. Базовые типы множеств должны быть одинаковыми при объединении.

Error: Operation not implemented for sets

Некоторые бинарные операторы не определены для множеств. Это операторы: div, mod, **, >= и . Последние два могут быть определены для множеств в будущих версиях.

Warning: Automatic type conversion from floating type to COMP which is an integer type

Обнаружено явное преобразование типов из real в comp . s encountered . Поскольку comp – это 64 -битное целое число, то это может вызвать ошибку.

Hint: use DIV instead to get an integer result

Если подсказки включены, то целочисленное деление с оператором ‘ / ‘ приведёт к этому сообщению, потому что результатом будет вещественный тип.

Error: string types doesn’t match, because of $V+ mode

Если выполняется компиляция в режиме <$V+>, то строка, передаваемая вами в качестве параметра, должна быть точно такого же типа, как параметр процедуры.

Error: succ or pred on enums with assignments not possible

Если вы объявили перечисляемый тип в стиле С , например, так:

Tenum = ( a , b , e :=5);

То вы не сможете использовать функции Succ или Pred с этим перечислением.

Error: Can’t read or write variables of this type

Вы пытаетесь прочитать или записать переменную из файла или в файл текстового типа, который не поддерживает тип переменной. Только целочисленные типы, вещественные, pchars и strings можно читать из файла или записывать в текстовый файл. Логические переменные можно только записывать в текстовый файл.

Error: Can’t use readln or writeln on typed file

readln и writeln можно использовать только с текстовыми файлами.

Error: Can’t use read or write on untyped file.

read и write допускаются только для текстовых или типизированных файлов.

Error: Type conflict between set elements

Это означает, что не менее одного элемента множества имеют неправильный тип.

Warning: lo/hi(dword/qword) returns the upper/lower word/dword

Free Pascal поддерживает перегруженную версию lo/hi для longint/dword/int64/qword , которые возвращают наименьшее/наибольшее (результат типа слово/двойное слово) значение аргумента. Turbo Pascal позволяет использовать 16-битные lo/hi , которые возвращают биты 0..7 для lo и биты 8..15 для hi . Если вы хотите получить поведение, аналогичное Turbo Pascal , вы должны использовать приведение типов к word или integer .

Error: Integer or real expression expected

Первый аргумент для str должен быть типа real или integer .

Error: Wrong type «Сообщение» in array constructor

Вы пытаетесь использовать тип в конструкторе массива, который недопустим.

Error: Incompatible type for arg no. Сообщ1: Got «Сообщ2», expected «Сообщ3»

Вы пытаетесь передать неправильный тип в указанный параметр.

Error: Method (variable) and Procedure (variable) are not compatible

Вы не можете связать метод с процедурной переменной или процедуру с указателем на метод.

Error: Illegal constant passed to internal math function

Аргумент-константа, переданный в функцию ln или sqrt выходит за пределы диапазона для этой функции.

Error: Can’t take the address of constant expressions

Невозможно получить адрес выражения-константы, потому что оно не записывается в память. Вы можете попробовать сделать типизированную константу. Эта ошибка может также появиться, если вы пытаетесь поместить свойство в параметр var .

Error: Argument can’t be assigned to

Только выражение, которое может быть в левой части присваивания, может быть передано как вызов по ссылке аргумента. Примечание: Свойства могут использоваться в левой части присваивания, тем не менее, они не могут использоваться как аргументы.

Error: Can’t assign local procedure/function to procedure variable

Не допускается присваивать локальные процедуры/функции процедурным переменным, потому что соглашение о вызовах локальных процедур/функций отличаются. Вы можете только присвоить локальную процедуру/функцию пустому указателю.

Error: Can’t assign values to an address

Не допускается присваивать значение адресу переменной, константы, процедуры или функции. Вы можете попытаться выполнить компиляцию с опцией -So , если идентификатор является процедурной переменной.

Error: Can’t assign values to const variable

Не допускается присваивать значение переменной, которая объявлена как константа. Обычно параметр объявляется как константа. Чтобы иметь возможность изменять значение, передавайте параметр по значению или параметр по ссылке (используя var ).

Error: Array type required

Если вы хотите получить доступ к переменной, используя индекс ‘ [ ] ‘, то тип должен быть массивом. В режиме FPC указатель также допускается.

Error: interface type expected, but got «»Сообщение»

Компилятор ожидал для нумератора имя типа интерфейса, но получил нечто другое. Следующий код приведёт к этой ошибке:

Type
TMyStream = Class ( TStream , Integer )

Hint: Mixing signed expressions and longwords gives a 64bit result

Если вы делите (или вычисляете модуль) выражения со знаком с типом longword (или наоборот), или если вы имеете переполнение и/или включена проверка диапазона и используется арифметическое выражение ( +, -, *, div, mod ), в котором оба числа со знаком и появляется longwords , то всё это вычисляется как 64 -битная арифметическая операция, которая медленнее, чем обычная 32 -битная. Вы можете избежать этого при помощи преобразования типа одного из операндов в подходящий для результата и другого операнда.

Warning: Mixing signed expressions and cardinals here may cause a range check error

Если вы используете бинарный оператор ( and, or, xor ) и один из операндов — это longword , в то время как другой – это выражение со знаком, то, если проверка диапазона включена, вы можете получить ошибку проверки диапазона, потому что в этом случае оба операнда преобразуются в longword перед выполнением операции. Вы можете избежать этого при помощи преобразования типа одного из операндов в подходящий для результата и другого операнда.

Error: Typecast has different size (Сообщ1 -> Сообщ2) in assignment

Преобразование типа при отличающихся размерах не допускается, когда переменная используется в присваивании.

Error: enums with assignments can’t be used as array index

Если вы объявили перечисляемый тип, который имеет С -подобные присваивания, как показано ниже:

Tenum = ( a , b , e :=5);

Вы не можете использовать его как индекс массива.

Error: Class or Object types «Сообщ1» and «Сообщ2» are not related

Выборка из одного класса в другой, в то время как класс/объект не являются связанными. Вероятно, это ошибка ввода.

Warning: Class types «arg1» and «arg2» are not related

Выборка из одного класса в другой, в то время как класс/объект не являются связанными. Вероятно, это ошибка ввода.

Error: Class or interface type expected, but got «arg1»

Компилятор ожидал имя класса или интерфейса, но получил другой тип или идентификатор.

Error: Type «Сообщение» is not completely defined

Эта ошибка случается, если тип не завершён, например, тип pointer , который указывает на неопределённый тип.

Warning: String literal has more characters than short string length

Размер строки-константы, которая связана с shortstring , больше максимального размера для shortstring ( 255 символов).

Warning: Comparison is always false due to range of values

Это сравнение беззнакового значения и константы со знаком, которая меньше нуля. По причине преобразования оператор всегда будет возвращать FALSE . Выполните явное преобразование константы в правильный диапазон, чтобы избежать этой проблемы.

Warning: Comparison is always true due to range of values

Это сравнение беззнакового значения и константы со знаком, которая меньше нуля. По причине преобразования оператор всегда будет возвращать TRUE . Выполните явное преобразование константы в правильный диапазон, чтобы избежать этой проблемы.

Warning: Constructing a class «Сообщ1» with abstract method «Сообщ2»

Например, создаваемый класс содержит неисполняемые абстрактные методы. Имеется вероятность, что случится ошибка времени исполнения 211 в коде, если эта процедура будет когда-либо вызвана. Все абстрактные методы должны быть перегружаемыми.

Hint: The left operand of the IN operator should be byte sized

Левый операнд в операторе IN не является порядковым или перечислением, который помещается в 8 бит. Это может привести к ошибке проверки диапазона. На текущий момент оператор in поддерживает левый оператор только в пределах байта. В случае с перечислениями, размер элемента перечисления может изменяться опциями <$PACKENUM>или <$Zn>.

Warning: Type size mismatch, possible loss of data / range check error

Это случается, когда меньшему типу присваивается значение, большее, чем исходный тип. Это означает, что может произойти ошибка проверки диапазона или уменьшение значения.

Hint: Type size mismatch, possible loss of data / range check error

Это случается, когда меньшему типу присваивается значение, большее, чем исходный тип. Это означает, что может произойти ошибка проверки диапазона или уменьшение значения.

Error: The address of an abstract method can’t be taken

Не найдено тело абстрактного метода, поэтому адрес абстрактного метода не может быть назначен.

Error: Assignments to formal parameters and open arrays are not possible

Вы пытаетесь присвоить значение формальному параметру (нетипизированный var , const или out ), или открытому массиву.

Error: Constant Expression expected

Компилятор ожидал выражение-константу, но получил выражение- переменную.

Error: Operation «Сообщ1» not supported for types «Сообщ2» and «Сообщ3»

Операция не допускается для указанных типов.

Error: Illegal type conversion: «Сообщ1» to «Сообщ2»

Когда выполняете преобразование типов, вы должны понимать, что размеры переменной и типа назначения одинаковы.

Hint: Conversion between ordinals and pointers is not portable

Если вы преобразуете тип pointer в longint (или наоборот), то код не будет компилироваться на машинах, использующих 64-разрядную адресацию.

Warning: Conversion between ordinals and pointers is not portable

Если вы преобразуете тип pointer в порядковый тип с другим размером (или наоборот), то могут возникнуть проблемы. Это предупреждение помогает в поиске 32-битного специального кода, где cardinal/longint используются для преобразования указателей в порядковые типы. Решением проблемы является использование вместо этого типов ptrint/ptruint .

Error: Can’t determine which overloaded function to call

Вы вызываете перегруженную функцию с параметром, который не связан с каким-либо объявленным списком параметров, например, когда вы имеете объявленную функцию с параметрами word и longint , а затем вызываете её с параметром типа integer .

Error: Illegal counter variable

Переменная для цикла for должна быть порядкового типа. Переменные циклов не могут быть вещественными числами или строками.

Warning: Converting constant real value to double for C variable argument, add explicit typecast to prevent this.

В C значения вещественных констант по умолчанию имеют тип double . Из этих соображений, когда вы передаёте вещественную константу в функцию С в качестве параметра, компилятор FPC по умолчанию преобразует её в тип double . Если вы хотите контролировать этот процесс, добавьте для константы явное преобразование в нужный тип.

Error: Class or COM interface type expected, but got «Сообщение»

Некоторые операторы, такие как AS , применяются только для классов или COM -интерфейсов.

Error: Constant packed arrays are not yet supported

Вы не можете объявить битовый ( упакованный ) массив как типизированную константу.

Error: Incompatible type for arg no. Сообщ1: Got «Сообщ2» expected «(Bit)Packed Array»

Компилятор ожидает битовый ( упакованный ) массив как указанный параметр.

Error: Incompatible type for Сообщение no. Сообщ1: Got «Сообщ2» expected «»(not packed) Array»

Компилятор ожидает регулярный (то есть НЕ упакованный ) массив как указанный параметр.

Error: Elements of packed arrays cannot be of a type which need to be initialised

Поддержка упакованных массивов, которым необходима инициализация (таких как ansistrings , или записей, содержащих ansistrings ), пока не реализована.

Error: Constant packed records and objects are not yet supported

Вы не можете объявить битовый ( упакованный ) массив как типизированную константу в данное время.

Warning: Arithmetic «Сообщение» on untyped pointer is unportable to <$T+>, suggest typecast

Сложение/вычитание из нетипизированных указателей может работать по разному в <$T+>. Используёте преобразование типов для типизированных указателей.

Error: Can’t take address of a subroutine marked as local

Нельзя получить адрес подпрограммы, помеченной как локальная.

Error: Can’t export subroutine marked as local from a unit

Подпрограмма, помеченная как локальная, не может быть экспортирована из модуля.

Error: Type is not automatable: «Сообщение»

Только byte, integer, longint, smallint, currency, single, double, ansistring, widestring, tdatetime, variant, olevariant, wordbool и все интерфейсы являются automatable .

Hint: Converting the operands to «Сообщение» before doing the add could prevent overflow errors.

Сложение двух типов может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед сложением.

Hint: Converting the operands to «Сообщение» before doing the subtract could prevent overflow errors.

Вычитание между двумя типами может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед вычитанием.

Hint: Converting the operands to «Сообщение» before doing the multiply could prevent overflow errors.

Умножение между двумя типами может вызвать ошибку переполнения. Обычно вы конвертируете результат в больший тип. Вы должны предотвращать такие ошибки, преобразуя операнды в этот тип перед умножением.

Warning: Converting pointers to signed integers may result in wrong comparison results and range errors, use an unsigned

Виртуальное адресное пространство на виртуальных машинах располагается от $00000000 до $ffffffff . Многие операционные системы позволяют выделять память с адресами выше $80000000 . Например, как WINDOWS , так и LINUX , допускают использование указателей в диапазоне от $0000000 до $bfffffff . Если вы преобразуете типы со знаком, это может вызвать ошибки переполнения и проверки диапазона, но также $80000000 $7fffffff . Это может вызвать случайную ошибку в коде, подобно этому: «if p>q» .

Error: Interface type Сообщение has no valid GUID

Если применяется оператор as для интерфейса или класса, то интерфейс (то есть правый операнд оператора as ) должен иметь правильный GUID .

Error: Invalid selector name

Селектор Objective-C не может быть пустым, он должен быть правильным идентификатором или одинарным двоеточием, а если он содержит менее одного двоеточия, он также должен быть завершён.

Error: Expected Objective-C method, but got Сообщение

Селектор может быть создан только для методов Objective-C , не для любых других процедур/функций/методов.

Error: Expected Objective-C method or constant method name

Селектор может быть создан только для методов Objective-C , при задании имени используются строковые константы или идентификатор метода Objective-C , который является видимым из текущей области видимости.

Error: No type info available for this type

Информация о типах не генерируется для некоторых типов, таких как перечисления с пропусками в их диапазоне значений (включая перечисления, нижняя граница которых отлична от нуля).

Error: Ordinal or string expression expected

The expression must be an ordinal or string type.

Error: String expression expected

The expression must be a string type.

Warning: Converting 0 to NIL

Use NIL rather than 0 when initialising a pointer.

Error: Objective-C protocol type expected, but got ”arg1”

The compiler expected a protocol type name, but found something else.

Error: The type ”arg1” is not supported for interaction with the Objective-C runtime

Objective-C makes extensive use of run time type information (RTTI). This format is defined by the maintainers of the run time and can therefore not be adapted to all possible Object Pascal types. In particular, types that depend on reference counting by the compiler (such as ansistrings and certain kinds of interfaces) cannot be used as fields of Objective-C classes, cannot be directly passed to Objective-C methods, and cannot be encoded using objc_encode.

Error: Class or objcclass type expected, but got ”arg1”

It is only possible to create class reference types of class and objcclass

Error: Objcclass type expected

The compiler expected an objcclass type

Warning: Coerced univ parameter type in procedural variable may cause crash or memory corruption: arg1 to arg2

univ parameters are implicitly compatible with all types of the same size, also in procedural variable definitions. That means that the following code is legal, because single and longint have the same size:

TIntProc = procedure (l: univ longint);

procedure test(s: single);

This code may however crash on platforms that pass integers in registers and floating point values on the stack, because then the stack will be unbalanced. Note that this warning will not flagg all potentially dangerous situations. when test returns.

Error: Type parameters of specializations of generics cannot reference the currently specialized type

Recursive specializations of generics like Type MyType = specialize MyGeneric ; are not possible.

Error: Type parameters are not allowed on non-generic class/record/object procedure or function

Type parameters are only allowed for methods of generic classes, records or objects

Error: Generic declaration of ”arg1” differs from previous declaration

Generic declaration does not match the previous declaration

Error: Helper type expected

The compiler expected a class helper type.

Error: Record type expected

The compiler expected a record type.

Error: Derived class helper must extend a subclass of ”arg1” or the class itself

If a class helper inherits from another class helper the extended class must extend either the same class as the parent class helper or a subclass of it

Error: Derived record helper must extend ”arg1”

If a record helper inherits from another record helper it must extend the same record that the parent record helper extended.

Источник

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, а Вы ему суёте чёрте что и в попе бантик. :)
Строка эта, в том исходнике, что Вы тут привели, отсутствует, поэтому смотрите её сами, где в ней проблема.

Skip to content



Open


Issue created Jul 27, 2004 by FPC Admin account@fpc_adminOwner

error in type definition.

Original Reporter info from Mantis: >8<

  • Reporter name: Bug Import


Description:

Here’s how it works….

===================================
Test 1:
===================================
Open a new ‘Application’ and a button, label and edit box.
Double click on the button and the following variable….

var f:text;

Now, build the project, and I get…

unit1.pas(31,11) Error: Error in type definition.

===================================
Test 2:
===================================

Take the same ‘Application’ and add the variable declaration to the forms’ var area and compile.
I get…..

Project "project1" successfully build :)

===================================
Test 3:
===================================

Open a new ‘Program’ and add the same variable declaration to the top of the programs var area.
Build the project and ‘et voila’, success !!!!

===================================

If there’s something I missed, a pascal thing in other words, let me know.

Here’s my system details.

Lazarus: 0.9.1 Beta Date: 27-7-2004 Built from source.
fpc: 1.0.10 Date: 2003/06/26
gcc: 3.3.4

Output for ‘uname -a’:
Linux hal 2.4.26 #6 (closed) Mon Jun 14 19:07:27 PDT 2004 i686 unknown unknown GNU/Linux
This is slackware 10 by-the-by.

Let me know if there’s anything else I should add.

Many thanks
cvt

Additional information:

Imported information
———————
Name: Corne van Tonder
Mail: cvt (at) blueyonder.co.uk

Mantis conversion info:

  • Mantis ID: 385

3 / 2 / 1

Регистрация: 09.01.2022

Сообщений: 59

1

Ошибка при компиляция проекта с фреймов

06.11.2022, 01:19. Показов 392. Ответов 9


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

Я изучаю работа с фреймы в Lazarus и делаю как в это видео: https://www.youtube.com/watch?v=bQ9ORTMByG8

Но когда начинаю компиляцию возникает следующии ошибки:

Compile Project, Target: project1.exe: Exit code 1, Errors: 3

unit2.pas(15,15) Error: Identifier not found «TFrame1»
unit2.pas(15,22) Error: Error in type definition
unit2.pas(15,5) Error: Symbol cannot be published, can be only a class

а строка 15 у меня автоматически создана при поставление фрейма в форму 2. Она содержит такой текст:

15 Frame1_1: TFrame1;

Удалил фреймы из формы — все компилируется успешно, а потом поставил их снова и опять эти ошибки.

Помогите, пожалуйста, чтобы разобраться!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



пофигист широкого профиля

4602 / 3062 / 850

Регистрация: 15.07.2013

Сообщений: 17,660

06.11.2022, 01:28

2

Цитата
Сообщение от ivanov_333
Посмотреть сообщение

Помогите, пожалуйста, чтобы разобраться!

В чём разобраться? Код показывай.



0



ivanov_333

3 / 2 / 1

Регистрация: 09.01.2022

Сообщений: 59

06.11.2022, 01:47

 [ТС]

3

п.с. Делаю следнее:

Создаю один фрейм, сохраняю его. Потом создаю еще 2 формы и поставляю фрейм в их.
Но когда начинаю компиляцию возникает эти ошибки.

Добавлено через 2 минуты
Вот код в форма 2:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
unit Unit2;
 
{$mode ObjFPC}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs;
 
type
 
  { TForm2 }
 
  TForm2 = class(TForm)
    Frame1_1: TFrame1;
  private
 
  public
 
  end;
 
var
  Form2: TForm2;
 
implementation
{$R *.lfm}
 
end.

Добавлено через 3 минуты
Хочу просто скомпилировать проект, а не могу ради эти ошибки.
Как надо их поправит?

Добавлено через 6 минут
П.с.Работаю с последняя 64 битовая версия Lazarus 2.2.4

Добавлено через 5 минут
Вот и код в фрейме:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
unit frame1;
 
{$mode ObjFPC}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, StdCtrls;
 
type
 
  { TFrame1 }
 
  TFrame1 = class(TFrame)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
  private
 
  public
 
  end;
 
implementation
 
{$R *.lfm}
 
end.



0



пофигист широкого профиля

4602 / 3062 / 850

Регистрация: 15.07.2013

Сообщений: 17,660

06.11.2022, 02:12

4

Цитата
Сообщение от ivanov_333
Посмотреть сообщение

п.с. Делаю следнее:

А просто сделать архив с проектом и приложить этот архив к сообщению кто-нибудь/что-нибудь запрещает?



0



3 / 2 / 1

Регистрация: 09.01.2022

Сообщений: 59

06.11.2022, 02:18

 [ТС]

5

Вот и проект:



0



AzAtom

Модератор

3199 / 1813 / 664

Регистрация: 15.11.2015

Сообщений: 7,260

06.11.2022, 08:03

6

Лучший ответ Сообщение было отмечено ivanov_333 как решение

Решение

ivanov_333, в uses формы добавь модуль фрейма.

Добавлено через 59 секунд

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Unit2; // Здесь добавить Unit2, или где там хранится фрейм
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Frame1_1: TFrame1;
  private
 
  public
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
end.



1



Нарушитель

8388 / 4391 / 1009

Регистрация: 12.03.2015

Сообщений: 20,566

06.11.2022, 10:08

7

так штоли надо?

Ошибка при компиляция проекта с фреймов



0



AzAtom

Модератор

3199 / 1813 / 664

Регистрация: 15.11.2015

Сообщений: 7,260

06.11.2022, 10:27

8

Лучший ответ Сообщение было отмечено ivanov_333 как решение

Решение

ivanov_333, конкретно в твоём проекте будет так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
unit Unit3;
 
{$mode ObjFPC}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Frame1; // Здесь добавил Frame1
 
type
 
  { TForm3 }
 
  TForm3 = class(TForm)
    Frame1_1: TFrame1;
  private
 
  public
 
  end;
 
var
  Form3: TForm3;
 
implementation
 
{$R *.lfm}
 
end.

Так же и для третьей формы.



1



3 / 2 / 1

Регистрация: 09.01.2022

Сообщений: 59

06.11.2022, 12:50

 [ТС]

9

Спасибо большое!

Да, решение элементарно и логично, как когда добавляешь новая форма и связываешь ей с главная форма.

Интересно, я сейчас обратил внимание, что на видео Lazarus автоматически добавил имя фрейма в Uses на форм 2, когда пользователь нажал(выбрал) на его. Версия Lazarus на видео 2.0.2.

Возможно это баг в последняя версия Lazaruse?

Желаю всем хороший день и всего наилучшего!



0



6 / 4 / 2

Регистрация: 22.02.2019

Сообщений: 19

06.11.2022, 17:49

10

Цитата
Сообщение от ivanov_333
Посмотреть сообщение

Интересно, я сейчас обратил внимание, что на видео Lazarus автоматически добавил имя фрейма в Uses на форм 2, когда пользователь нажал(выбрал) на его. Версия Lazarus на видео 2.0.2.
Возможно это баг в последняя версия Lazaruse?

Ага, тараканы они везде.



0



I am developping a program using SynPDF. When I try to compile, I have the following error messages:

Code:
type
  /// some type definition to avoid inclusion of TypInfo in SynCommons/mORMot.pas
  PFPCInterfaceData = TypInfo.PInterfaceData;
  PFPCVmtMethodParam = TypInfo.PVmtMethodParam;
  PFPCIntfMethodTable = TypInfo.PIntfMethodTable;
  PFPCIntfMethodEntry = TypInfo.PIntfMethodEntry;
{$ifdef FPC_NEWRTTI}
  PFPCRecInitData = TypInfo.PRecInitData; 

Error messages:
SynFPCTypInfo.pas(93,31) Error: Identifier not found «PInterfaceData»
SynFPCTypInfo.pas(93,45) Error: Error in type definition
SynFPCTypInfo.pas(94,32) Error: Identifier not found «PVmtMethodParam»
SynFPCTypInfo.pas(94,47) Error: Error in type definition
SynFPCTypInfo.pas(95,33) Error: Identifier not found «PIntfMethodTable»
SynFPCTypInfo.pas(95,49) Error: Error in type definition
SynFPCTypInfo.pas(96,33) Error: Identifier not found «PIntfMethodEntry»
SynFPCTypInfo.pas(96,49) Error: Error in type definition

Has anyone encountered that?
Thanks

I’m trying to use SynCrypto.pas (part of Synopse mORMot ORM/SOA/MVC framework) in my Lazarus project to decrypt AES-128 stream. My project not compiling with errors in SynFPCTypInfo at this code:

PFPCInterfaceData = TypInfo.PInterfaceData;
PFPCVmtMethodParam = TypInfo.PVmtMethodParam;
PFPCIntfMethodTable = TypInfo.PIntfMethodTable;
PFPCIntfMethodEntry = TypInfo.PIntfMethodEntry;

SynFPCTypInfo.pas(91,31) Error: Identifier not found "PInterfaceData"
SynFPCTypInfo.pas(91,45) Error: Error in type definition
SynFPCTypInfo.pas(92,32) Error: Identifier not found "PVmtMethodParam"
SynFPCTypInfo.pas(92,47) Error: Error in type definition
SynFPCTypInfo.pas(93,33) Error: Identifier not found "PIntfMethodTable"
SynFPCTypInfo.pas(93,49) Error: Error in type definition
SynFPCTypInfo.pas(94,33) Error: Identifier not found "PIntfMethodEntry"
SynFPCTypInfo.pas(94,49) Error: Error in type definition

I think that it’s incompatibility with Delphi TypInfo module. How can I fix it?

Usama Abdulrehman's user avatar

asked May 15, 2020 at 21:40

Mistral's user avatar

1

So … I suggest you to install the new pascal: https://github.com/newpascal/newpascal/releases/tag/np-v1.0.56, download the zip and unzip it in some folder, for example (D: lazarus newpascal), and configure the paths according to the mORMot site: For proper FPC compilation, ensure you have the following settings to your project:

Other unit files (-Fu):
D:lazarusnewpascalccrmORMot;D:lazarusnewpascalccrmORMotSQLite3;D:lazarusnewpascalccrmORMotSQLite3DDDinfra

Include files (-Fi):
$(ProjOutDir);D:lazarusnewpascalccrmORMot;D:lazarusnewpascalccrmORMotSQLite3

Libraries (-fFl):
D:lazarusnewpascalccrmORMotstatic$(TargetCPU)-$(TargetOS)

site: https: //synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_113, then you will have at least how to test your app.

answered Jul 5, 2020 at 14:59

Hermes's user avatar

Я пытаюсь использовать SynCrypto.pas (часть инфраструктуры Synopse mORMot ORM/SOA/MVC) в моем проекте Lazarus для расшифровки потока AES-128. Мой проект не компилируется с ошибками в SynFPCTypInfo в этом коде:

PFPCInterfaceData = TypInfo.PInterfaceData;
PFPCVmtMethodParam = TypInfo.PVmtMethodParam;
PFPCIntfMethodTable = TypInfo.PIntfMethodTable;
PFPCIntfMethodEntry = TypInfo.PIntfMethodEntry;

SynFPCTypInfo.pas(91,31) Error: Identifier not found "PInterfaceData"
SynFPCTypInfo.pas(91,45) Error: Error in type definition
SynFPCTypInfo.pas(92,32) Error: Identifier not found "PVmtMethodParam"
SynFPCTypInfo.pas(92,47) Error: Error in type definition
SynFPCTypInfo.pas(93,33) Error: Identifier not found "PIntfMethodTable"
SynFPCTypInfo.pas(93,49) Error: Error in type definition
SynFPCTypInfo.pas(94,33) Error: Identifier not found "PIntfMethodEntry"
SynFPCTypInfo.pas(94,49) Error: Error in type definition

Я думаю, что это несовместимость с модулем Delphi TypInfo. Как я могу это исправить?

1 ответ

Итак… Предлагаю установить новый паскаль: https:/ /github.com/newpascal/newpascal/releases/tag/np-v1.0.56, скачайте zip и разархивируйте его в какую-нибудь папку, например (D:lazarusnewpascal), и настройте пути согласно сайт mORMot: для правильной компиляции FPC убедитесь, что у вас есть следующие настройки для вашего проекта:

Другие файлы модулей (-Fu): D:lazarusnewpascalccrmORMot;D:lazarusnewpascalccrmORMotSQLite3;D:lazarusnewpascalccrmORMotSQLite3DDDinfra

Включить файлы (-Fi): $(ProjOutDir);D:lazarusnewpascalccrmORMot;D:lazarusnewpascalccrmORMotSQLite3

Библиотеки (-fFl): D:lazarusnewpascalccrmORMotstatic$(TargetCPU)-$(TargetOS)

Сайт: https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_113, то у вас будет как минимум как протестировать ваше приложение.


0

Hermes
5 Июл 2020 в 17:59

Понравилась статья? Поделить с друзьями:
  • Error in txn out of gas
  • Error in tuning and matching phase перевод
  • Error in triplet x64 windows unable to find a valid visual studio instance
  • Error in tmp sideload package zip status 7
  • Error in timerdx