type
  T =record
    str1:string[10];
    str2:string[5];
  end;procedure TForm1.Button1Click(Sender: TObject);
var
  tmpStr :string;
  tmp:T;
  tmpP1,tmpP2:PChar;
begin
  tmpStr := 'zzzzz';
  FillChar(tmp,sizeof(T),#0);
  tmpP1 := @tmpStr[1];
  tmpP2 := @(tmp.Str1[1]);
  Move(tmpP1,tmpP2,5);
  ShowMessage(tmp.str1);
end;tmp.str1中却没有任何数据,为什么MOVE没把数据复制过去?

解决方案 »

  1.   

    var
      tmpStr :string;
      tmp:T;
      tmpP1,tmpP2:PChar;
    begin
      tmpStr := 'zzzzz';
      FillChar(tmp, sizeof(T), #0);
      tmpP1 := @tmpStr[1];
      tmpP2 := @(tmp.Str1[0]);
      Move(tmpP1^,tmpP2^,5);
      tmp.str1 := TrimRight(tmp.str1);
      ShowMessage(tmp.str1);
    end;
      

  2.   

    var
      iLen: Integer;
      tmpStr :string;
      tmp:T;
      tmpP1,tmpP2:PChar;
    begin
      tmpStr := 'zzzzz';
      FillChar(tmp, sizeof(T), #0);
      tmpP1 := @tmpStr[1];
      tmpP2 := @(tmp.Str1[1]);
      iLen := Length(tmpStr);
      tmp.Str1[0] := Chr(iLen);
      Move(tmpP1^,tmpP2^, iLen);
      tmp.str1 := TrimRight(tmp.str1);
      ShowMessage(tmp.str1);
    end;
      

  3.   

    DELPHI中无类型参数是用指针赋值还是用指针指向的缓冲区?
      

  4.   

    move穿的参数你在仔细看看
    是指针还是值?