Руководство пользователя Free Pascal версии Версия документа Март 2010 Michael Van Canneyt, Florian Klampfl icon

Руководство пользователя Free Pascal версии Версия документа Март 2010 Michael Van Canneyt, Florian Klampfl

Смотрите также:
Комплекс «Энергосфера» Программное обеспечение «Сервер опроса» Руководство пользователя Версия...
GARMIN GPSMAP 60 Руководство пользователя...
Руководство пользователя Версия 0 Санкт-Петербург 2010 Фирма зао «Взлет»...
Программный комплекс «Банк-Клиент» imb-link tcp/ip руководство пользователя версия 1...
Руководство пользователя Версия 86060401...
Руководство пользователя программы «OracleAdmin» 37 4 Руководство пользователя программы...
Руководство пользователя Учет посещаемости и успеваемости студентов...
Системной Энциклопедии" Руководство пользователя "...
Инструкция и документация версия 92 данное руководство недостаточно адаптировано с версии 2...
Версия программы or4t31-4 прибор приемно-контрольный охранно-пожарный «орион-4Т 1» руководство...
Руководство пользователя Версия 4...
Руководство пользователя Версия 01...

страницы: 1   2   3   4   5   6   7   8   9   10
вернуться в начало

Compiling arg1 for the second time When you request debug messages (-vd) the compiler tells you what units it recompiles for the second time.

Error: No property found to override You want to override a property of a parent class, when there is, in fact, no such property in the parent class.

Error: Only one default property is allowed You specified a property as Default, but the class already has a default property, and a class can have only one default property.

Error: The default property must be an array property Only array properties of classes can be made default properties.

Error: Virtual constructors are only supported in class object model You cannot have virtual constructors in objects. You can only have them in classes.

Error: No default property available You are trying to access a default property of a class, but this class (or one of its ancestors) doesn’t have a default property.

Error: The class can’t have a published section, use the {$M+} switch If you want a published section in a class definition, you must use the {$M+} switch, which turns on generation of type information.

Error: Forward declaration of class "arg1" must be resolved here to use the class as ancestor

To be able to use an object as an ancestor object, it must be defined first. This error occurs in the following situation:

Type ParentClas = Class;

ChildClass = Class(ParentClass)



where ParentClass is declared but not defined.

Error: Local operators not supported You cannot overload locally, i.e. inside procedures or function definitions.

Error: Procedure directive "arg1" not allowed in interface section This procedure directive is not allowed in the interface section of a unit. You can only use it in the implementation section.

Error: Procedure directive "arg1" not allowed in implementation section This procedure directive is not allowed in the implementation section of a unit. You can only use it in the interface section.

Error: Procedure directive "arg1" not allowed in procvar declaration This procedure directive cannot be part of a procedural or function type declaration.

Error: Function is already declared Public/Forward "arg1" You will get this error if a function is defined as forward twice. Or if it occurs in the interface section, and again as a forward declaration in the implementation section.

Error: Can’t use both EXPORT and EXTERNAL These two procedure directives are mutually exclusive.

Warning: "arg1" not yet supported inside inline procedure/function Inline procedures don’t support this declaration.

Warning: Inlining disabled Inlining of procedures is disabled.

Info: Writing Browser log arg1 When information messages are on, the compiler warns you when it writes the browser log (generated with the {$Y+ } switch).

Hint: may be pointer dereference is missing The compiler thinks that a pointer may need a dereference.

Fatal: Selected assembler reader not supported The selected assembler reader (with {$ASMMODE xxx} is not supported. The compiler can be compiled with or without support for a particular assembler reader.

Error: Procedure directive "arg1" has conflicts with other directives You specified a procedure directive that conflicts with other directives. For instance cdecl and pascal are mutually exclusive.

Error: Calling convention doesn’t match forward This error happens when you declare a function or procedure with e.g. cdecl; but omit this directive in the implementation, or vice versa. The calling convention is part of the function declaration, and must be repeated in the function definition.

Error: Property can’t have a default value Set properties or indexed properties cannot have a default value.

Error: The default value of a property must be constant The value of a default declared property must be known at compile time. The value you specified is only known at run time. This happens e.g. if you specify a variable name as a default value.

Error: Symbol can’t be published, can be only a class Only class type variables can be in a published section of a class if they are not declared as a property.

Error: This kind of property can’t be published Properties in a published section cannot be array properties. They must be moved to public sections. Properties in a published section must be an ordinal type, a real type, strings or sets.

Error: An import name is required Some targets need a name for the imported procedure or a cdecl specifier.

Error: Division by zero A division by zero was encounted.

Error: Invalid floating point operation An operation on two real type values produced an overflow or a division by zero.

Error: Upper bound of range is less than lower bound The upper bound of an array declaration is less than the lower bound and this is not possible.

Warning: string "arg1" is longer than "arg2" The size of the constant string is larger than the size you specified in string type definition.

Error: string length is larger than array of char length The size of the constant string is larger than the size you specified in the Array[x..y] of char definition.

Error: Illegal expression after message directive Free Pascal supports only integer or string values as message constants.

Error: Message handlers can take only one call by ref. parameter A method declared with the message directive as message handler can take only one parameter which must be declared as call by reference. Parameters are declared as call by reference using the var-directive.

Error: Duplicate message label: "arg1" A label for a message is used twice in one object/class.

Error: Self can only be an explicit parameter in methods which are message handlers The Self parameter can only be passed explicitly to a method which is declared as message handler.

Error: Threadvars can be only static or global Threadvars must be static or global; you can’t declare a thread local to a procedure. Local variables are always local to a thread, because every thread has its own stack and local variables are stored on the stack.

Fatal: Direct assembler not supported for binary output format You can’t use direct assembler when using a binary writer. Choose an other output format or use another assembler reader.

Warning: Don’t load OBJPAS unit manually, use {$mode objfpc} or {$mode delphi} instead You are trying to load the ObjPas unit manually from a uses clause. This is not a good idea. Use the {$MODE OBJFPC} or {$mode delphi} directives which load the unit automatically.

Error: OVERRIDE can’t be used in objects Override is not supported for objects, use virtual instead to override a method of a parent object.

Error: Data types which require initialization/finalization can’t be used in variant records Some data types (e.g. ansistring) need initialization/finalization code which is implicitly generated by the compiler. Such data types can’t be used in the variant part of a record.

Error: Resourcestrings can be only static or global Resourcestring can not be declared local, only global or using the static directive.

Error: Exit with argument can’t be used here An exit statement with an argument for the return value can’t be used here. This can happen for example in try..except or try..finally blocks.

Error: The type of the storage symbol must be boolean If you specify a storage symbol in a property declaration, it must be a boolean type.

Error: This symbol isn’t allowed as storage symbol You can’t use this type of symbol as storage specifier in property declaration. You can use only methods with the result type boolean, boolean class fields or boolean constants.

Error: Only classes which are compiled in $M+ mode can be published A class-typed field in the published section of a class can only be a class which was compiled in {$M+} or which is derived from such a class. Normally such a class should be derived from TPersistent.

Error: Procedure directive expected This error is triggered when you have a {$Calling} directive without a calling convention specified. It also happens when declaring a procedure in a const block and you used a ; after a procedure declaration which must be followed by a procedure directive. Correct declarations are:


p : procedure;stdcall=nil;

p : procedure stdcall=nil;

Error: The value for a property index must be of an ordinal type The value you use to index a property must be of an ordinal type, for example an integer or enumerated type.

Error: Procedure name too short to be exported The length of the procedure/function name must be at least 2 characters long. This is because of a bug in dlltool which doesn’t parse the .def file correctly with a name of length 1.

Error: No DEFFILE entry can be generated for unit global vars

Error: Compile without -WD option You need to compile this file without the -WD switch on the command line.

Fatal: You need ObjFpc (-S2) or Delphi (-Sd) mode to compile this module You need to use {$MODE OBJFPC} or {$MODE DELPHI} to compile this file. Or use the corresponding command line switch, either -Mobjfpc or -MDelphi.

Error: Can’t export with index under arg1 Exporting of functions or procedures with a specified index is not supported on this target.

Error: Exporting of variables is not supported under arg1 Exporting of variables is not supported on this target.

Error: Improper GUID syntax The GUID indication does not have the proper syntax. It should be of the form


Where each X represents a hexadecimal digit.

Warning: Procedure named "arg1" not found that is suitable for implementing the arg2.arg3

The compiler cannot find a suitable procedure which implements the given method of an interface.

A procedure with the same name is found, but the arguments do not match.

Error: interface identifier expected This happens when the compiler scans a class declaration that contains interface function name mapping code like this:


TMyObject = class(TObject, IDispatch)

function IUnknown.QueryInterface=MyQueryInterface;


and the interface before the dot is not listed in the inheritance list.

Error: Type "arg1" can’t be used as array index type Types like qword or int64 aren’t allowed as array index type.

Error: Con-and destructors aren’t allowed in interfaces Constructor and destructor declarations aren’t allowed in interfaces. In the most cases method QueryInterface of IUnknown can be used to create a new interface.

Error: Access specifiers can’t be used in INTERFACES The access specifiers public, private, protected and published can’t be used in interfaces because all methods of an interface must be public.

Error: An interface can’t contain fields Declarations of fields aren’t allowed in interfaces. An interface can contain only methods and properties with method read/write specifiers.

Error: Can’t declare local procedure as EXTERNAL Declaring local procedures as external is not possible. Local procedures get hidden parameters that will make the chance of errors very high.

Warning: Some fields coming before "arg1" weren’t initialized In Delphi mode, not all fields of a typed constant record have to be initialized, but the compiler warns you when it detects such situations.

Error: Some fields coming before "arg1" weren’t initialized In all syntax modes but Delphi mode, you can’t leave some fields uninitialized in the middle of a typed constant record.

Warning: Some fields coming after "arg1" weren’t initialized You can leave some fields at the end of a type constant record uninitialized (The compiler will initialize them to zero automatically). This may be the cause of subtle problems.

Error: VarArgs directive (or ’...’ in MacPas) without CDecl/CPPDecl/MWPascal and External

The varargs directive (or the “...” varargs parameter in MacPas mode) can only be used with procedures or functions that are declared with external and one of cdecl, cppdecl and mwpascal. This functionality is only supported to provide a compatible interface to C functions like printf.

Error: Self must be a normal (call-by-value) parameter You can’t declare Self as a const or var parameter, it must always be a call-by-value parameter.

Error: Interface "arg1" has no interface identification When you want to assign an interface to a constant, then the interface must have a GUID value set.

Error: Unknown class field or method identifier "arg1" Properties must refer to a field or method in the same class.

Warning: Overriding calling convention "arg1" with "arg2" There are two directives in the procedure declaration that specify a calling convention. Only the last directive will be used.

Error: Typed constants of the type "procedure of object" can only be initialized with NIL You can’t assign the address of a method to a typed constant which has a ’procedure of object’ type, because such a constant requires two addresses: that of the method (which is known at compile time) and that of the object or class instance it operates on (which can not be known at compile time).

Error: Default value can only be assigned to one parameter It is not possible to specify a default value for several parameters at once. The following is invalid:

Procedure MyProcedure (A,B : Integer = 0);

Instead, this should be declared as

Procedure MyProcedure (A : Integer = 0; B : Integer = 0);

Error: Default parameter required for "arg1" The specified parameter requires a default value.

Warning: Use of unsupported feature! You’re trying to force the compiler into doing something it cannot do yet.

Hint: C arrays are passed by reference Any array passed to a C function is passed by a pointer (i.e. by reference).

Error: C array of const must be the last argument You can not add any other argument after an array of const for cdecl functions, as the size pushed on stack for this argument is not known.

Hint: Type "arg1" redefinition This is an indicator that a previously declared type is being redefined as something else. This may, or may not be, a potential source of errors.

Warning: cdecl’ared functions have no high parameter Functions declared with the cdecl modifier do not pass an extra implicit parameter.

Warning: cdecl’ared functions do not support open strings Openstring is not supported for functions that have the cdecl modifier.

Error: Cannot initialize variables declared as threadvar Variables declared as threadvar can not be initialized with a default value. The variables will always be filled with zero at the start of a new thread.

Error: Message directive is only allowed in Classes The message directive is only supported for Class types.

Error: Procedure or Function expected A class method can only be specified for procedures and functions.

Warning: Calling convention directive ignored: "arg1" Some calling conventions are supported only by certain CPUs. I.e. most non-i386 ports support only the standard ABI calling convention of the CPU.

Error: REINTRODUCE can’t be used in objects reintroduce is not supported for objects.

Error: Each argument must have its own location If locations for arguments are specified explicitly as it is required by some syscall conventions, each argument must have its own location. Things like

procedure p(i,j : longint ’r1’);

aren’t allowed.

Error: Each argument must have an explicit location If one argument has an explicit argument location, all arguments of a procedure must have one.

Error: Unknown argument location The location specified for an argument isn’t recognized by the compiler.

Error: 32 Bit-Integer or pointer variable expected The libbase for MorphOS/AmigaOS can be given only as longint, dword or any pointer variable.

Error: Goto statements aren’t allowed between different procedures It isn’t allowed to use goto statements referencing labels outside the current procedure.

The following example shows the problem:


procedure p1;



procedure p2;


goto l1; // Эта метка неразрешена.







Fatal: Procedure too complex, it requires too many registers Your procedure body is too long for the compiler. You should split the procedure into multiple smaller procedures.

Error: Illegal expression This can occur under many circumstances. Usually when trying to evaluate constant expressions.

Error: Invalid integer expression You made an expression which isn’t an integer, and the compiler expects the result to be an integer.

Error: Illegal qualifier One of the following is happening :

• You’re trying to access a field of a variable that is not a record.

• You’re indexing a variable that is not an array.

• You’re dereferencing a variable that is not a pointer.

Error: High range limit < low range limit You are declaring a subrange, and the high limit is less than the low limit of the range.

Error: Exit’s parameter must be the name of the procedure it is used in Non local exit is not allowed. This error occurs only in mode MacPas.

Error: Illegal assignment to for-loop variable "arg1" The type of a for loop variable must be an ordinal type. Loop variables cannot be reals or strings. You also cannot assign values to loop variables inside the loop (Except in Delphi and TP modes). Use a while or repeat loop instead if you need to do something like that, since those constructs were built for that.

Error: Can’t declare local variable as EXTERNAL Declaring local variables as external is not allowed. Only global variables can reference external variables.

Error: Procedure is already declared EXTERNAL The procedure is already declared with the EXTERNAL directive in an interface or forward declaration.

Warning: Implicit uses of Variants unit The Variant type is used in the unit without any used unit using the Variants unit. The compiler has implicitly added the Variants unit to the uses list. To remove this warning the Variants unit needs to be added to the uses statement.

Error: Class and static methods can’t be used in INTERFACES The specifier class and directive static can’t be used in interfaces because all methods of an interface must be public.

Error: Overflow in arithmetic operation An operation on two integer values produced an overflow.

Error: Protected or private expected strict can be only used together with protected or private.

Error: SLICE can’t be used outside of parameter list slice can be used only for arguments accepting an open array parameter.

Error: A DISPINTERFACE can’t have a parent class A DISPINTERFACE is a special type of interface which can’t have a parent class.

Error: A DISPINTERFACE needs a guid A DISPINTERFACE always needs an interface identification (a GUID).

Warning: Overridden methods must have a related return type. This code may crash, it depends on a Delphi parser bug

If you declare overridden methods in a class definition, they must have the same return type. Some versions of Delphi allow you to change the return type of interface methods, and even to change procedures into functions, but the resulting code may crash depending on the types used and the way the methods are called.

Error: Dispatch IDs must be ordinal constants The dispid keyword must be followed by an ordinal constant (the dispid index).

Error: The range of the array is too large Regardless of the size taken up by its elements, an array cannot have more than high(ptrint) elements. Additionally, the range type must be a subrange of ptrint.

Error: The address cannot be taken of bit packed array elements and record fields If you declare an array or record as packed in Mac Pascal mode (or as packed in any mode with {$bitpacking on}), it will be packed at the bit level. This means it becomes impossible to take addresses of individual array elements or record fields. The only exception to this rule is in the case of packed arrays elements whose packed size is a multple of 8 bits.

Error: Dynamic arrays cannot be packed Only regular (and possibly in the future also open) arrays

can be packed.

Error: Bit packed array elements and record fields cannot be used as loop variables If you declare an array or record as packed in Mac Pascal mode (or as packed in any mode with {$bitpacking on}), it will be packed at the bit level. For performance reasons, they cannot be used as loop variables.

Error: VAR and TYPE are allowed only in generics The usage of VAR and TYPE to declare new types inside an object is allowed only inside generics.

Error: This type can’t be a generic Only Classes, Objects, Interfaces and Records are allowed to be used as generic.

Warning: Don’t load LINEINFO unit manually, Use the -gl compiler switch instead Do not use the lineinfo unit directly, Use the -gl switch which automatically adds the correct unit for reading the selected type of debugging information. The unit that needs to be used depends on the type of debug information used when compiling the binary.

Error: No function result type specified for function "arg1" The first time you declare a function you have to declare it completely, including all parameters and the result type.

Error: Specialization is only supported for generic types Types which are not generics can’t be specialized.

Error: Generics can’t be used as parameters when specializing generics When specializing a generic, only non-generic types can be used as parameters.

Error: Constants of objects containing a VMT aren’t allowed If an object requires a VMT either because it contains a constructor or virtual methods, it’s not allowed to create constants of it. In TP and Delphi mode this is allowed for compatibility reasons.

Error: Taking the address of labels defined outside the current scope isn’t allowed It isn’t allowed to take the address of labels outside the current procedure.

Error: Cannot initialize variables declared as external Variables declared as external can not be initialized with a default value.

оставить комментарий
Размер1,33 Mb.
ТипРуководство пользователя, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   2   3   4   5   6   7   8   9   10
Ваша оценка этого документа будет первой.
Ваша оценка:
Разместите кнопку на своём сайте или блоге:

База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Курсовые работы