Move(@s[1],p^,Length(S)); 
改为:
Move(s[1],p^,Length(S)); 
or
Move(Pointer(@s[1])^,p^,Length(S));

解决方案 »

  1.   

    更正:
    ……
    A:=VarArrayCreate([0,Length(S)-1],VarByte);
    ……
    Move(s[1],p^,Length(S));没人理我,还剩一个半小时交工,卡在这里,开始绝望……
      

  2.   

    A进行Move后,然后交由另外的函数处理看是否正确。procedure SomeProc(Data: Variant);
    var
      P: Pointer;
      Size: Integer;
      S: string;
    begin
      P := VarArrayLock(Data);
      try
        Size := VarArrayHighBound(Data); //VarArrayDimCount??    
        SetLength(S, Size);
        Move(P^, PChar(S)^, Size);
        ShowMessage(S);
      finally
        VarArrayUnLock(Data);
      end;
    end;