本人初学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,该怎么办?

解决方案 »

  1.   

    就像是C++里面的&引用。比如你的函数为
    procedure ss(var s: string);
    begin
      s:= 'change';
    end;调用后s的值就是change,如果没有var,那么s仅仅是一个局部变量ss函数执行完后s就被释放掉了。
      

  2.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
      

  3.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
      

  4.   

    对,没有var就是传值,有var 是传地址
      

  5.   

    我现在想要编辑buf,怎么下手啊?
    我用vartype函数,编译通不过啊。
      

  6.   

    对,没有var就是传值,有var 是传地址
      

  7.   

    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
      dest : pchar;
    begin
      strcopy(dest,'string');
    end;
      

  8.   

    procedure ss(dest : pchar);
    begin
      strcopy(dest,'string');//把'string'复制到由dest开头的内存中。实现了buff的写入
    end;
      

  9.   

    查了一天了,终于解决:TByteArray(Buffer)[i]对byte类型数组的访问。