用 CopyMemoryVOID CopyMemory (
    PVOID Destination, // address of copy destination 
    CONST VOID *Source, // address of block to copy 
    DWORD Length // size, in bytes, of block to copy  
   ); 

解决方案 »

  1.   

    实际上我个人觉得还是 move 好用
      

  2.   

    使用API函数:MoveMemory或CopyMemory
    procedure MoveMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
    {$EXTERNALSYM MoveMemory}
    procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
    {$EXTERNALSYM CopyMemory}
    如果源和目标有重叠区域,则必须用MoveMemory,否则用哪个都行.
      

  3.   

    type
      TData=record
        iVal:integer;
        dblVal:double;
      end;
    var
      a,b:TData;
    begin
      a.iVal := 25;
      a.dblVal := 3.14;
      Move(a,b,sizeof(TData));
      ShowMessage(IntToStr(b.iVal) + ''#10#13'' + FloatToStr(b.dblVal));
    end;
    一切OK.
      

  4.   

    Move(const Source; var Dest; Count: Integer);
    Source and Dest都是指向一个首地址,

    var                                首地址
      P: Pointer;                      P^
      P: PChar                         P^
      //只要是指针类型就是              P^
      S: string                        S[1];
      Arr: array [0..10] of Char;      Arr[0] or Arr
      Arr: array [0..10] of TDataRecord Arr[0] or Arr
      //只要是array 类型就是           Arr[0] or Arr
     
    明白首地址后,就很容易明白C 的memcpy和Delphi的Move ,或API的MoveMemory/CopyMemory,就是内存的相互Copy,只要给出首地址就行了。当然在数组中首地址也可以不是0开头,有时我们对一个record or array进行赋值时,是一个个域进行赋值,如下:
    type
      TArrChar: array [0..3] of Char;procedure SetValue(Arr: TArrChar);
    var
      Chars: array of Char;
    begin
      SetLength(Chars, 4);
      Chars[0] := Arr[0];
      ...
    end;我们可以如此:
    procedure SetValue(Arr: TArrChar);
    var
      Chars: array of Char;
    begin
      SetLength(Chars, 4);
      Move(Arr, Chars, SizeOf(Char) * 4);
    end;
      
    record类型也可以这样,不过要注意对string/array类型进行静态分配空间; 如
      S: string[255];
      Arr: array [0..len] of TMyType
      

  5.   

    const
      MAX_LEN = 10;type  
      TArrData = array [0..MAX_LEN] of TData;
      TData = record
        I: INteger;
        S: string[255];
      end;//将Data copy to arrData[Index]
    procedure(var ArrData: TArrData; Data: TData; Index: Integer);
    begin
      Move(Data, ArrData[Index], SizeOf(TData));
    end;procedure(var ArrData: TArrData; Data: TData; Index: Integer);
    var
      P: Pointer;
    begin
      P := @ArrData[Index];
      Move(Data, P^, SizeOf(TData));
    end;procedure(var ArrData: TArrData; Data: TData; Index: Integer);
    var
      S, D: Pointer;
    begin
      S := @Data;
      D := @ArrData[Index];
      Move(S^, D^, SizeOf(TData));
    end;
      

  6.   

    唉~ copy_paste(木石三) 兄也该给点分呀~
      

  7.   

    又白作功了,torble关心了,呵呵