我有一个Smallint型的内存首地址的值和长度,怎么将该段内存里的数据读出来呢

解决方案 »

  1.   


    var
      X : ^Smallint;
    begin
      X := 你所说的地址;
      Showmessage(InttoStr(X^));
    end;
      

  2.   

    受教了,以前我也只知道用copymemory,原来还可以直接读取啊
      

  3.   


    {以下,都是脱了裤子放屁之举(别误会!我是说自己的代码)}var
      X: SmallInt = 888;procedure TForm1.Button1Click(Sender: TObject);//测试一(一楼我的代码)
    var
      P : ^SmallInt;
    begin
      P := @X;
      Showmessage(InttoStr(P^));
    end;procedure TForm1.Button2Click(Sender: TObject);//测试二
    var
      Addr : integer;
    begin
      Addr := integer(@X); //地址值
      Showmessage(InttoStr(Addr)); //显示这个地址值
      Showmessage(InttoStr(PSmallInt(Addr)^));
    end;procedure TForm1.Button3Click(Sender: TObject);//测试三(CopyMemory)
    var
      Temp: SmallInt;
    begin
      CopyMemory(@Temp, @X, SizeOf(SmallInt));
      Showmessage(InttoStr(Temp));
    end;
      

  4.   

    CopyMemory(目标内存区域的首地址(你拷出来后准备存放的区域的首地址),
                源内存区域的首地址(就是你说的“我有一个Smallint型的内存首地址的值”),
                要拷贝的长度(注意这个长度是以字节为单位));
    因为你那是Smallint,所以你应该注意长度的设置是否正确