Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 我该如何摆脱“我该怎么做?”;W1047不安全代码';@操作员'&引用;在这个RaiseExection调用中_Delphi_Delphi 2007 - Fatal编程技术网

Delphi 我该如何摆脱“我该怎么做?”;W1047不安全代码';@操作员'&引用;在这个RaiseExection调用中

Delphi 我该如何摆脱“我该怎么做?”;W1047不安全代码';@操作员'&引用;在这个RaiseExection调用中,delphi,delphi-2007,Delphi,Delphi 2007,Delphi2007中的以下代码给出了警告 W1047不安全代码“@操作员” 在将@ThreadNameInfo传递给RaiseException的行中: procedure SetThreadName(const _Name: AnsiString); var ThreadNameInfo: TThreadNameInfo; begin ThreadNameInfo.FType := $1000; ThreadNameInfo.FName := PAnsiChar(_Name);

Delphi2007中的以下代码给出了警告

W1047不安全代码“@操作员”

在将@ThreadNameInfo传递给RaiseException的行中:

procedure SetThreadName(const _Name: AnsiString);
var
  ThreadNameInfo: TThreadNameInfo;
begin
  ThreadNameInfo.FType := $1000;
  ThreadNameInfo.FName := PAnsiChar(_Name);
  ThreadNameInfo.FThreadID := $FFFFFFFF;
  ThreadNameInfo.FFlags := 0;
  try
    RaiseException($406D1388, 0, SizeOf(ThreadNameInfo) div SizeOf(LongWord),
      @ThreadNameInfo); // --> Here
  except
    // ignore
  end;
end;
除了禁用“不安全代码”的编译器警告外,还有其他方法消除此警告吗?既然Delphi不再支持dotNET,这个警告还有意义吗


我尝试将参数显式类型转换为PDWord(最后一个参数的声明类型),但没有任何更改。

此警告用于.net编译器编译的代码。如果您不使用Delphi.net编译器,您可以也应该禁止该特定警告。

Addr(ThreadNameInfo)是否有效?@LURD
Addr
@
完全可以互换,除了受
$TYPEDADDRESS
的影响之外。具体来说,
Addr
是一个返回
指针的内在函数。另一方面,如果启用
$TYPEDADDRESS,则
@
将生成一个键入的指针。结论,
Addr()
也将导致发出该警告。