LCL Task Dialog type mismatch
lazarus\lcl\lcltaskdialog.pas line 834 ``` if TaskDialogIndirect(@Config,@result,@RadioRes,@VerifyChecked)=S_OK then exit; // error (mostly invalid argument) -> execute the VCL emulation ``` Trye to compile it in type-safe mode: #40263 > lcltaskdialog.pas(834,67) Error: Incompatible types: got "^Boolean" expected "PBOOL" Line 312: `VerifyChecked: Boolean;` `Boolean` is 1 byte size and is Intel/Borland-boolean (meaning, `Ord(True) = +1`) Line 142: ``` TaskDialogIndirect: function(AConfig: pointer; Res: PInteger; ResRadio: PInteger; VerifyFlag: PBOOL): HRESULT; stdcall; ``` Frankly, those seem to be bad conversion, having pointer parameters, and even non-const'ed, instead of having var-paraneters. Unless "nil" is valid and often used value - this is just non-Pascalish. Anyway, `BOOL` is Microsoft-boolean (MS Windows Long Bool type) and it has `SizeOf(BOOL) == SizeOf(int)` and also `Ord(True) == -1` here not `+1`. Mistakes like that often give a very hard to find bugs, at least in in Delphi... Line 312 should be `VerifyChecked: BOOL;`
issue