{
在这个例子中
我们使用@运算符获取指向数组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));