Delphi,将字符串复制到字节数组

Delphi,将字符串复制到字节数组,delphi,string,bytearray,delphi-7,Delphi,String,Bytearray,Delphi 7,我所做的很有效,但我正在寻找是否有一种更快的方法将字符串复制到pByteArray中 来自sysutils PByteArray = ^TByteArray; TByteArray = array[0..32767] of Byte; 假设a和s设置正确 a: pByteArray; s: string; 有什么快速的方法吗 for i := 1 TO Length(s) - 1 do a^[i] := Ord(s[i]); delphi 7没关系,找到了

我所做的很有效,但我正在寻找是否有一种更快的方法将字符串复制到pByteArray中

来自sysutils

  PByteArray = ^TByteArray;
  TByteArray = array[0..32767] of Byte;
假设as设置正确

 a:   pByteArray;
 s:   string;
有什么快速的方法吗

  for i := 1 TO Length(s) - 1 do
   a^[i] := Ord(s[i]);
delphi 7

没关系,找到了

 Move(s[1], a^, Length(s));

我想你可以使用
move
过程,就像这样

你可以简单地施放它:

  a := @s[1];
另一种方法是:

  s := PChar(a);

小心使用移动。如果您使用的是Delphi 2009,它可能会失败。相反,请使用以下命令:

移动(s[1],a^,长度*SizeOf(Char))


您也可以在SysUtils.pas中使用类TEncoding(仅限Delphi 2009/2010++)来执行该任务。

请记住检查不复制任何内容的长度,它会使
a
指向与其类型不同的内容。True(我假设其目的是作为bytearray或vice vera访问a字符串)如果长度为零,则不执行for循环。要完全等效,您需要添加一个if长度检查。补充。