Delphi - E2033实际和正式var参数的类型必须相同

fff*_*fff 2 delphi delphi-2010

我是Delphi的新手,试图对几年前实现的项目进行调试.我的ide是Delphi 2010和带错误的代码;

function DrawTextExW(hDC: HDC; lpString: PWideChar; nCount: Integer; var lpRect:
TRect; uFormat: UINT; dtp: PDRAWTEXTPARAMS): Integer;

const
   MAX_STATIC_BUFFER = 8192;
const
   STATIC_BUFFER_LEN: integer = 8192;
const
   DT_PREFIXONLY = $00200000;

var
...
  tm: TTextMetricA;
...

begin
  ...

  GetTextMetrics(hDC, tm);    //Error Line
  if (uFormat and DT_EXTERNALLEADING) = DT_EXTERNALLEADING then
    lh := tm.tmHeight + tm.tmExternalLeading
  else
    lh := tm.tmHeight;

  ...
end
Run Code Online (Sandbox Code Playgroud)

获取"[DCC错误] ElVCLUtils.pas(3555):E2033实际和正式var参数的类型必须相同"该行中的错误.这段代码有什么问题?

klu*_*udg 7

你应该使用其中之一

var
...
  tm: TTextMetric;
...

begin
  ...

  GetTextMetrics(hDC, tm);
Run Code Online (Sandbox Code Playgroud)

要么

var
...
  tm: TTextMetricA;
...

begin
  ...

  GetTextMetricsA(hDC, tm);
Run Code Online (Sandbox Code Playgroud)

第一个版本更可取.