function TForm1.ssend(var Buf):integer;
var
mBuf1:^string;
begin
mBuf1:=@Buf;
listbox1.Items.Add('ssend()-->>'+mBuf1^);
end;procedure TForm1.Button1Click(Sender: TObject);
var
s1:string;
begin
s1:='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
ssend(s1);
end;
在ssend()中用一个字符串指针变量,可以或得Buf的值.
请问,在ssend()函数中,我还有其它方法可以取得形参Buf的值吗?
可以这样吗?
var 
mBuf2:PChar;
getmem(mBuf2,255);
mBuf2:=@Buf

解决方案 »

  1.   

    function TForm1.ssend(var Buf):integer;
    var
    mBuf1:string;
    begin
    mBuf1 := string(Buf);
    listbox1.Items.Add('ssend()-->>'+mBuf1);
    end;
      

  2.   

    对,比如我一执行mBuf1 := string(Buf);就报错;
    说0x.....指令错误,什么什么内存0xf45621不能"read"
      

  3.   

    其实,我是挂在一个游戏上,想截一下封包,这个游戏是用send()这个函数发送封包的.
    Send(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
    于是我这样自定义:
    function mySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
    var
     mBuf:string;
    begin
     PopUnit.FrmPop.ListBox1.Items.Add('拦截到发送的封包');
     PopUnit.FrmPop.ListBox1.Items.Add('封包大小:'+IntToStr(len));
     mBuf:=string(Buf);
     PopUnit.FrmPop.ListBox1.Items.Add('封包内容:'+mBuf);
     mySend:=oSend(s,Buf,len, flags);
    end;
    可一执行就报错,不知道为什么!~~~
    难道哪不对吗?
      

  4.   

    其实是游戏程序报错"0x023a6a41"指令引用的"0x024320f8"内存.该内存不能为"read".
    要终止程序,请..........