4

私が持っているものは機能しますが、文字列を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]);

デルファイ7

4

4 に答える 4

8

Moveの使用に注意してください。Delphi 2009 を使用している場合、失敗する可能性があります。代わりに、これを使用します。

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

SysUtils.pas (Delphi 2009/2010++ のみ) でクラス TEncoding を使用してタスクを実行することもできます。

于 2009-12-01T08:27:48.250 に答える
3

単純にキャストできます:

  a := @s[1];

逆の場合は次のとおりです。

  s := PChar(a);
于 2009-12-01T07:26:28.530 に答える
2

気にせず、見つけた

 Move(s[1], a^, Length(s));
于 2009-12-01T06:34:45.357 に答える
1

この例moveのようにプロシージャを使用できると思います

于 2009-12-01T06:35:34.203 に答える