Difference between revisions of "FPC message: Wrong number of parameters specified"
From Lazarus wiki
Jump to navigationJump to searchm (Fixed syntax highlighting; deleted category included in page template) |
|||
(8 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{FPC message: Wrong number of parameters specified}} | ||
+ | |||
== Missing parameter or too many parameters == | == Missing parameter or too many parameters == | ||
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 lang=pascal>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 lang=pascal>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>. |
Latest revision as of 03:06, 16 February 2020
│
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}
.