function abc(var X) 中的var X到底是什么?

rappercn 2005-09-06 09:51:10
本人初学delphi,今天刚刚装的delphi7,找了一段代码,但是有些地方不懂,希望各位指点。
请看以下函数:
{---------------------------------------}
{函数功能:Send函数的HOOK
{函数参数:同Send
{函数返回值:integer
{---------------------------------------}
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行发送的数据处理
MessageBeep(1); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;

这是一段hook程序,目的是替换原来的api函数,在声明函数头的地方有这样一段:
var Buf
这个声明的意思是声明一个variant类型的变量吗?
此变量vb中声明类型是buf as any,vc中是const char * buf,请问如果我要操作这个buf,该怎么办呢?
buf的数据应该是这样的:EF 52 CF C3 DE E1 C1 85 7D,(应该是按照数组保存的)
比如我把第一个EF改成11,该怎么办?
...全文
388 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rappercn 2005-09-06
  • 打赏
  • 举报
回复
查了一天了,终于解决:

TByteArray(Buffer)[i]

对byte类型数组的访问。
leonkim 2005-09-06
  • 打赏
  • 举报
回复
procedure ss(dest : pchar);
begin
strcopy(dest,'string');//把'string'复制到由dest开头的内存中。实现了buff的写入
end;
leonkim 2005-09-06
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn2Click(Sender: TObject);
var
dest : pchar;
begin
strcopy(dest,'string');
end;
leonkim 2005-09-06
  • 打赏
  • 举报
回复
对,没有var就是传值,有var 是传地址
rappercn 2005-09-06
  • 打赏
  • 举报
回复
我现在想要编辑buf,怎么下手啊?
我用vartype函数,编译通不过啊。
bluesky23 2005-09-06
  • 打赏
  • 举报
回复
对,没有var就是传值,有var 是传地址

chenzunshi4 2005-09-06
  • 打赏
  • 举报
回复
http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
xixuemao 2005-09-06
  • 打赏
  • 举报
回复
就像是C++里面的&引用。比如你的函数为
procedure ss(var s: string);
begin
s:= 'change';
end;

调用后s的值就是change,如果没有var,那么s仅仅是一个局部变量ss函数执行完后s就被释放掉了。
chenzunshi4 2005-09-06
  • 打赏
  • 举报
回复
http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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