如何在此 RaiseExeption 调用中删除 "W1047 Unsafe code '@ operator'"
How do I get rid of "W1047 Unsafe code '@ operator'" in this RaiseExeption call
Delphi 2007 中的以下代码给我警告
W1047 Unsafe code '@ operator'
在将@ThreadNameInfo 传递给 RaiseException 的行中:
procedure SetThreadName(const _Name: AnsiString);
var
ThreadNameInfo: TThreadNameInfo;
begin
ThreadNameInfo.FType := 00;
ThreadNameInfo.FName := PAnsiChar(_Name);
ThreadNameInfo.FThreadID := $FFFFFFFF;
ThreadNameInfo.FFlags := 0;
try
RaiseException(6D1388, 0, SizeOf(ThreadNameInfo) div SizeOf(LongWord),
@ThreadNameInfo); // --> Here
except
// ignore
end;
end;
除了禁用 "unsafe code" 的编译器警告外,还有其他方法可以消除此警告吗?这个警告还有意义吗,因为 Delphi 不再支持 dotNET?
我尝试将参数显式转换为 PDWord(最后一个参数的声明类型),但没有任何改变。
此警告旨在用于将由 .net 编译器编译的代码。如果您没有使用 Delphi .net 编译器,您可以而且应该取消该特定警告。
Delphi 2007 中的以下代码给我警告
W1047 Unsafe code '@ operator'
在将@ThreadNameInfo 传递给 RaiseException 的行中:
procedure SetThreadName(const _Name: AnsiString);
var
ThreadNameInfo: TThreadNameInfo;
begin
ThreadNameInfo.FType := 00;
ThreadNameInfo.FName := PAnsiChar(_Name);
ThreadNameInfo.FThreadID := $FFFFFFFF;
ThreadNameInfo.FFlags := 0;
try
RaiseException(6D1388, 0, SizeOf(ThreadNameInfo) div SizeOf(LongWord),
@ThreadNameInfo); // --> Here
except
// ignore
end;
end;
除了禁用 "unsafe code" 的编译器警告外,还有其他方法可以消除此警告吗?这个警告还有意义吗,因为 Delphi 不再支持 dotNET?
我尝试将参数显式转换为 PDWord(最后一个参数的声明类型),但没有任何改变。
此警告旨在用于将由 .net 编译器编译的代码。如果您没有使用 Delphi .net 编译器,您可以而且应该取消该特定警告。