Difference between revisions of "FPC message: Wrong number of parameters specified"
From Lazarus wiki
Jump to navigationJump to searchm (copymove from FPC message: Wrong number of parameters specified) |
|||
Line 5: | Line 5: | ||
You confused the function and forgot a parameter or added a parameter too much. | You confused the function and forgot a parameter or added a parameter too much. | ||
− | == Missing @ == | + | == Missing <code>@</code> == |
For example: | For example: | ||
<syntaxhighlight>Button1.Click := Button1Click;</syntaxhighlight> | <syntaxhighlight>Button1.Click := Button1Click;</syntaxhighlight> | ||
− | In [[Mode ObjFPC]] you must add the @ to tell the compiler, that you want the pointer to the function, not the result of the function: | + | In [[Mode ObjFPC|<code>{$mode objfpc}</code>]] you must add the [[@|<code>@</code>-address-operator]] to tell the compiler, that you want the pointer to the function, not the result of the function: |
<syntaxhighlight>Button1.Click := @Button1Click;</syntaxhighlight> | <syntaxhighlight>Button1.Click := @Button1Click;</syntaxhighlight> | ||
− | Delphi users often confuse this, because Delphi allows it and adds the @ internally. If you prefer the Delphi syntax you can use {$mode Delphi} instead of {$mode ObjFPC}. | + | Delphi users often confuse this, because Delphi allows it and adds the @ internally. |
− | + | If you prefer the Delphi syntax you can use [[Mode Delphi|<code>{$mode Delphi}</code>]] instead of <code>{$mode ObjFPC}</code>, or use the [[sGlobalModeswitch|mode switch]] <code>{$modeswitch classicprocvars on}</code>. | |
[[Category:Compiler and linker messages]] | [[Category:Compiler and linker messages]] |
Revision as of 16:10, 3 February 2018
│
Deutsch (de) │
English (en) │
Missing parameter or too many parameters
You confused the function and forgot a parameter or added a parameter too much.
Missing @
For example:
Button1.Click := Button1Click;
In {$mode objfpc}
you must add the @
-address-operator to tell the compiler, that you want the pointer to the function, not the result of the function:
Button1.Click := @Button1Click;
Delphi users often confuse this, because Delphi allows it and adds the @ internally.
If you prefer the Delphi syntax you can use {$mode Delphi}
instead of {$mode ObjFPC}
, or use the mode switch {$modeswitch classicprocvars on}
.