比如我有两个record类型变量record1,record2,我要把这两个变量的内容连起来放在一起,换到一个arr:arr[0..2047] of char.的当中,如何实现呢???

解决方案 »

  1.   

    两个变量的内容?
    record1.name + record2.name → arr:arr[0..2047] of char?
      

  2.   

    var a:record1;move(a,arr,sizeof(a))
      

  3.   

    to:zjqyb(风清扬*任它溺水三千,我只取一瓢饮*)
     用move,只能把a 放到了arr中,如何把另一个记录类型加到arr后面呢
     
    我的目的是要把两个记录变量的内存中得内容放到同一个地方,把他们连起来如:
      变量a:   ---内存值: 19 10 13 11
      变量b:   ---内存值: 22 22 23 24把记录a,b的内容一起放到变量c,c类型可以是char数据或byte数据  变量c: ---内存值: 19 10 13 11 22 22 23 24
      

  4.   

    var p:pbyte;
        a:record1; 
        b:record2;
    getmem(p,sizeof(a)+sizeof(b));
    move(a^,p^,sizeof(a));
    move(b^,(p+sizeof(a))^,sizeof(b));
    record1,record2   must use packed 申明
      

  5.   

    没有啊getmen函数,我这样这个函数没有定义啊 ,还有a,b好象必须定义为指针类型吧
      

  6.   

    uses System;
    var  F: file;
      Size: Integer;
      Buffer: PChar;
    begin
      AssignFile(F, 'test.txt');
      Reset(F, 1);
      try
        Size := FileSize(F);
        GetMem(Buffer, Size);
        try
          BlockRead(F, Buffer^, Size);
          ProcessFile(Buffer, Size);
        finally
          FreeMem(Buffer);
        end;
      finally
        CloseFile(F);
      end;end;
      

  7.   

    var 
      arr:arr[0..2047] of char
      p:pbyte;
      a:record1; 
      b:record2;
      
      p := @arr[0];  
      move(a^,p^,sizeof(a));
      
      Inc( p, sizeof(a) );
      move(b^,p^,sizeof(b));
      

  8.   

    move(a^,p^,sizeof(a)); 这里有这个错误
    [Error] Unit1.pas(453): Pointer type required
      

  9.   

    p := @arr[0];  
      move(a,p^,sizeof(a));
      
      Inc( p, sizeof(a) );
      move(b,p^,sizeof(b));
      

  10.   

    这个,,,要看具体的record的定义啦