{ 在这个例子中 我们使用@运算符获取指向数组A第一个元素的指针,并将其分配给P。 接下来,我们使用SetString函数将P转换为指向AnsiString的指针,并将其分配给S。 请注意,我们使用PAnsiChar而不是PChar作为SetString函数的第二个参数,因为字节数组可能包含非ASCII字符,这些字符只能使用AnsiString类型表示。 } var A: array of Byte; Buffer,buffer2: array of Byte; P,p2: PByte; S: string; begin S := 'hello世界'; setlength(A, length(S)); Move(S[1],A[0],length(S)); // SetLength(A, 5); // A[0] := 72; // 'H' // A[1] := 101; // 'e' // A[2] := 108; // 'l' // A[3] := 108; // 'l' // A[4] := 111; // 'o' P := @A[0]; SetString(S, PAnsiChar(P), Length(A)); showmessage(s); //第二种 SetLength(Buffer, Length(A)); Move(P^, Buffer[0], Length(A)); //再转到string s := ''; SetLength(S, Length(Buffer)); Move(Buffer[0], S[1], Length(Buffer)); showmessage(s); //string 到 pbyte p2 :=pbyte(PAnsiChar(s)); SetLength(Buffer2, Length(s)); Move(p2^, Buffer2[0], Length(Buffer2)); ShowMessage(PAnsiChar(Buffer2));