本帖最后由 changsn 于 2012-06-16 16:42:36 编辑

解决方案 »

  1.   

    type
      TBuffer = array[0..1023]of byte;var buffer:TBuffer ;
    copymemroy(@Login,@TBuffer(buf^)[1],sizeof(TLogin));或者
    inc(longword(buf));
    copymemroy(@Login,buf,sizeof(TLogin));
    dec(longword(buf));
      

  2.   

    大哥,第二种,对指针inc dec 这样操作安全吗?
      

  3.   

    CopyMemory(pDest, Pointer(Integer(buf)+1), size)要区别有类型的指针和吴类型的指针加减常量
      

  4.   

    将tlogin定义成指针,将它指向数组不久可以了type
       TBuffer = array[0..1023]of byte;
       PLogin=^Tlogin;
       Tlogin=packed record
         name:array[0..15] of Char;
         sex:Byte;
         pass:array[0..31] of Char;
       end;
    procedure TForm1.Button1Click(Sender: TObject);
    var buffer:TBuffer ;
        login:Tlogin;
        I:Integer;
    begin
       for I := 0 to 1023 do
         buffer[i]:= Byte(I)+$30;
       login := PLogin(@buffer)^;
       ShowMessage(login.name);
    end;