delphi string byte pbyte

发布时间 2023-03-26 11:00:47作者: Tag
{
在这个例子中
我们使用@运算符获取指向数组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));