How to resolve Delphi error: Incompatible types: 'PWideChar' and 'Pointer' -
i have piece of code delphi 7:
var lprgndata: prgndata; pc: pchar; pr: prect; ... pc := @(lprgndata^.buffer[0]);
in delphi xe4 gives following compile error:
incompatible types: 'pwidechar' , 'pointer'
how should code updated work correctly in xe4?
thanks
whether or not compiles depends upon setting of type-checked pointers option. have enabled option excellent decision. doing results in stricter type checking.
with type-checked pointers disabled, code compile. type-checked pointers enabled, code not compile, want because code not valid.
now, on types in question. defined in windows
unit this:
type prgndata = ^trgndata; {$externalsym _rgndata} _rgndata = record rdh: trgndataheader; buffer: array[0..0] of byte; reserved: array[0..2] of byte; end; trgndata = _rgndata; {$externalsym rgndata} rgndata = _rgndata;
the benefit of using type-checked pointers compiler can tell doing not valid. knows lprgndata^.buffer[0]
has type byte
, @(lprgndata^.buffer[0])
has type ^byte
. , knows not compatible pchar
alias pwidechar
, ^widechar
.
fix code changing type of pc
^byte
or pbyte
.
Comments
Post a Comment