对Unsafe不懂加在哪里怎么用,指点一下

daviddivad 2005-04-09 10:48:44
我工程引用了一个pas文件,编译时有个函数编译出错提示:
Unsafe pointer variables,parameters or consters only allowed in Unsafe Procedure
怎么改
...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoeiuvcom 2005-04-13
  • 打赏
  • 举报
回复
关注
pascal_lee_tw 2005-04-10
  • 打赏
  • 举报
回复
先在 PAS 文件最头加上
{$UNSAFECODE ON}

然后再在每一个 Implement 内的有使用到 Unsafe 程式码的 Procedure (Function) 最后,加上 unsafe;

例如:

procedure TMyObject.ThisIsAnUnsafeProcedure; unsafe;
begin
abc=@pstring.........
end;
pascal_lee_tw 2005-04-10
  • 打赏
  • 举报
回复
PDWORD 看起来应该是 Pointer of DWORD 的意思。而 PByte 应该是 Pointer of Byte。

请注意,D2005 下(或者说.Net下)不再建议使用 Pointer,你应该仅可能将其改成是 DWORD 及 BYTE 之类的型态。

其中 DWORD 处比较好改,你可以看看,在何处用到它,用到它的System Procedure/Function 是什么,然后查看Borland的源码,你会发现它们都已改成没有 Pointer 的 Param 了。

至于PByte, 我想应该是 Array of byte 型态吧!

具体怎么改,必须看它们的源码做什么用,再如上句所述,查看Borland源码的Param改成什么型态了,再修改之。

这需要慢慢的、一个一个的试才能体会,我现在不好说。
daviddivad 2005-04-10
  • 打赏
  • 举报
回复
感谢:pascal_lee_tw(厚积薄发)!!!
另外在该pas中有用到:
S: PDWORD;
T: PByte;
这两种类型在delphi2005中提示说这些类型未定义,该改成什么类型?
daviddivad 2005-04-09
  • 打赏
  • 举报
回复
另外:
S: PDWORD;
T: PByte;

c#中用何替代?

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧