var
myrecord :TmyRecord;
begin
myrecord :=.....//付值
...
...
writedata(SlotName,pchar(@MyRecord),sizeof(TMyRecord));end; 
(通过服务器中转)

解决方案 »

  1.   

    有点问题var
    myrecord :TmyRecord;
    begin
    myrecord :=.....//付值
    ...
    ...
    writedata(SlotName,pointer(@MyRecord),sizeof(TMyRecord));end; 或
    var
    myrecord :TmyRecord;
    begin
    myrecord :=.....//付值
    ...
    ...
    writedata(SlotName,@MyRecord,sizeof(TMyRecord));end; 
      

  2.   

    我的tmyrecord是个结构体
    我现在一赋值就出错eaccessviolation错误
      

  3.   

    我的tmyrecord是个结构体
    我现在一赋值就出错eaccessviolation错误
      

  4.   

    type
      TMyRecord = packed record
        head: array[0..3] of Char;
        aa:byte; 
        bb1:byte; 
        bb2:byte;
        cc:byte;     
    dd:byte;      
    ee:longword;
         ff:longword;
         
        gg:byte;  
        hh:byte; 
     ii:byte;   
        jj:byte;    
        kk:byte;    
      end;
      PMyRecord = ^TMyRecord;
    var
      vMyRecord: PMyRecord;
      
    begin
     vmyrecord^.head[0]:='@'  ;
    end;
    一运行就出错
    eaccessviolation错误
    好像是没给vmyrecord赋地址
      

  5.   

    你用了指针,要分配内存
    getmem(vMyrecord)用完释放
    freemem(vMyrecord)
      

  6.   

    sorry 错了
    vMyrecord :=getmem(sizeof(Tmyrecord));
    ...
    ..
    freemem(vMyrecord)
      

  7.   

    sorry 错了
    vMyrecord :=getmem(sizeof(Tmyrecord));
    ...
    ..
    freemem(vMyrecord)
      

  8.   

    如果不用呢
    不用可以达到目的
    我现在改为vMyrecord就是一个结构
    不用指针了
    是不是就不用上边的了
    还有问一下怎样取一定范围内的随机数
      

  9.   

    不用指针就这样就可以了
    var
    myrecord :TmyRecord;
    begin
    //myrecord :=.....//付值
    MyRecord.aa  :=1;
    Myrecord.bb :=2
    ...
    ...
    Myrecord.kk :=...;writedata(SlotName,pointer(@MyRecord),sizeof(TMyRecord));end; 随即函数
    function Random [ ( Range: Integer) ];
      

  10.   

    不用指针就这样就可以了
    var
    myrecord :TmyRecord;
    begin
    //myrecord :=.....//付值
    MyRecord.aa  :=1;
    Myrecord.bb :=2
    ...
    ...
    Myrecord.kk :=...;writedata(SlotName,pointer(@MyRecord),sizeof(TMyRecord));end; 随即函数
    function Random [ ( Range: Integer) ];
      

  11.   

    procedure TForm1.Button1Click(Sender: TObject);
    type
      TMyRecord = packed record
        head: array[0..3] of Char;
        aa:byte;
        bb1:byte;
        bb2:byte;
        cc:byte;
        dd:byte;
        ee:longword;
        ff:longword;
        gg:byte;
        hh:byte;
        ii:byte;
        jj:byte;
        kk:byte;
      end;
    var
      vMyRecord: TMyRecord;
      vBuffer: array[0..21] of Char;
      pBuffer: PChar;
    begin
      { TODO : 操作vMyRecord }
      vBuffer[00] := vMyRecord.head[0];
      vBuffer[01] := vMyRecord.head[1];
      vBuffer[02] := vMyRecord.head[2];
      vBuffer[03] := vMyRecord.head[3];  vBuffer[04] := Char(vMyRecord.aa);
      vBuffer[05] := Char(vMyRecord.bb1);
      vBuffer[06] := Char(vMyRecord.bb2);
      vBuffer[07] := Char(vMyRecord.cc);
      vBuffer[08] := Char(vMyRecord.dd);  vBuffer[09] := Char(vMyRecord.ee shr 24 and $FF);
      vBuffer[10] := Char(vMyRecord.ee shr 16 and $FF);
      vBuffer[11] := Char(vMyRecord.ee shr 08 and $FF);
      vBuffer[12] := Char(vMyRecord.ee shr 00 and $FF);  vBuffer[13] := Char(vMyRecord.ff shr 24 and $FF);
      vBuffer[14] := Char(vMyRecord.ff shr 16 and $FF);
      vBuffer[15] := Char(vMyRecord.ff shr 08 and $FF);
      vBuffer[16] := Char(vMyRecord.ff shr 00 and $FF);  vBuffer[17] := Char(vMyRecord.gg);
      vBuffer[18] := Char(vMyRecord.hh);
      vBuffer[19] := Char(vMyRecord.ii);
      vBuffer[20] := Char(vMyRecord.jj);
      vBuffer[21] := Char(vMyRecord.kk);  pBuffer := vBuffer;
      WriteData(SlotName, pBuffer, 22);
    end;
      

  12.   


    type
      TMyRecord = packed record
        head: array[0..3] of Char;
        aa:byte; 
        bb1:byte; 
        bb2:byte;
        cc:byte;     
    dd:byte;      
    ee:longword;
         ff:longword;
         
        gg:byte;  
        hh:byte; 
     ii:byte;   
        jj:byte;    
        kk:byte;    
      end;
      PMyRecord = ^TMyRecord;
    var
      vMyRecord: PMyRecord;
      
    begin
     new(vmyrecord);//分配内存地址
     vmyrecord^.head[0]:='@'  ;
    end;procedure TForm1.Button1Click(Sender: TObject);
    type
      TMyRecord = packed record
        head: array[0..3] of Char;
        aa:byte;
        bb1:byte;
        bb2:byte;
        cc:byte;
        dd:byte;
        ee:longword;
        ff:longword;
        gg:byte;
        hh:byte;
        ii:byte;
        jj:byte;
        kk:byte;
      end;
    var
      vBuffer: array[0..21] of Char;
    begin
      //先给vbuffer写入内存,就象上面的一样
      WriteData('要输入的名称', @vBuffer[0], 22);
    //这里你最后查一查Cardinal要的是什么,如果是总字节数,就要这样写WriteData('要输入的名称', @vBuffer[0], 22*Sizeof(TMyRecord));
    end;
      

  13.   


    type
      TMyRecord = packed record
        head: array[0..3] of Char;
        aa:byte; 
        bb1:byte; 
        bb2:byte;
        cc:byte;     
    dd:byte;      
    ee:longword;
         ff:longword;
         
        gg:byte;  
        hh:byte; 
     ii:byte;   
        jj:byte;    
        kk:byte;    
      end;
      PMyRecord = ^TMyRecord;
    var
      vMyRecord: PMyRecord;
      
    begin
     new(vmyrecord);//分配内存地址
     vmyrecord^.head[0]:='@'  ;
    end;procedure TForm1.Button1Click(Sender: TObject);
    type
      TMyRecord = packed record
        head: array[0..3] of Char;
        aa:byte;
        bb1:byte;
        bb2:byte;
        cc:byte;
        dd:byte;
        ee:longword;
        ff:longword;
        gg:byte;
        hh:byte;
        ii:byte;
        jj:byte;
        kk:byte;
      end;
    var
      vBuffer: array[0..21] of Char;
    begin
      //先给vbuffer写入内存,就象上面的一样
      WriteData('要输入的名称', @vBuffer[0], 22);
    //这里你最后查一查Cardinal要的是什么,如果是总字节数,就要这样写WriteData('要输入的名称', @vBuffer[0], 22*Sizeof(TMyRecord));
    end;