buff: array[1..64*1024] of PChar; 读成string
这个是64*1024个Pchar指针!除非你为每个指针分配内存,否则访问会出错的。
分配内存完成后
var P:PChar;
    for i:=1 to 64*1024 do
    begin
         P:=Buff[i];
         ShowMessage(StrPas(P));
   end;

解决方案 »

  1.   

    var p : pointer;
        str : string;
        size : integer;
        buff: array[1..64*1024] of PChar
    begin
      //...........
      size := //buff数组内容的长度
      p := new(size); 
      move(buff^, p^ , size);
      str := StrPas(PChar(p));
    end;没经过验证,不过我感觉可以,你可以试一下
      

  2.   

    : liaokuo(辽阔):不经过for,我觉得是不可能的。因为你的那个指针数组中,每一项都是动态创建的。他的内存明显不连续!!如果是连续的,还可能有方法!
    我认为你的那个指针数组还是需要for 一次,才能把东西读出来;
      

  3.   

    var
    getdata :array of string;
    begin
         move(buffer^,getdata,bufferleng); 
    end;
      

  4.   

    : liaokuo(辽阔):你那些pchar指向的东西是连续的???
    动态创建的,然后赋值,会连续吗??
      

  5.   

    用各位的move方法,老报:模块内存错误我想根据数据只连续的
    从头指针读数据,不知道可以不?
      

  6.   

    buff属于
    psocket.buff
    psocket属于动态页面的1个指针
    这个动态页面是c++的1个exe创建的
    我在my app里读这个动态内存页面
    如果是char数组,很容易读出来,可惜它是静态的
      

  7.   

    问题和解决方案
    Var
      Buff:PChar;Initialization
    Begin
      GetMem(Buff,64*1024);
    End;疑问=>
    Char和Pchar是完全不同的数据类型
    怎么会考虑用char代替PChar?
    >>如果用char代替,只能读到静态内容
    >>我需要读动态内存数据
      

  8.   

    liaokuo(辽阔):
    这个地方,你究竟是pchar还是char?????
    如果是char,则是连续的,而且很好实现。
    array[1..64*1024] of PChar