Delphi, скопировать строку в байтовый массив - PullRequest
4 голосов
/ 01 декабря 2009

что у меня работает, но я смотрю, есть ли более быстрый способ скопировать строку в 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

Ответы [ 4 ]

8 голосов
/ 01 декабря 2009

Остерегайтесь, используя Move. Если вы используете Delphi 2009, он может потерпеть неудачу. Вместо этого используйте это:

Move (с [1], a ^, длина (с) * SizeOf (Char));

Вы также можете использовать класс TEncoding в SysUtils.pas (только Delphi 2009/2010 ++) для выполнения задачи.

2 голосов
/ 01 декабря 2009

Вы можете просто разыграть его:

  a := @s[1];

И наоборот:

  s := PChar(a);
2 голосов
/ 01 декабря 2009

не бери в голову, нашел его

 Move(s[1], a^, Length(s));
1 голос
/ 01 декабря 2009

Я думаю, вы можете использовать move процедуру, как в этом примере

...