سؤال

ما قد يعمل ولكن ايم تبحث إذا كان هناك أسرع طريقة لنسخ السلسلة إلى 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]);

دلفي 7

هل كانت مفيدة؟

المحلول

حذار استخدام هذه الخطوة.إذا كنت تستخدم دلفي 2009 ، قد تفشل.بدلا من استخدام هذا:

الخطوة(s[1]،^, طول(s) * SizeOf(شار));

يمكنك أيضا استخدام فئة TEncoding في SysUtils.pas (دلفي 2009/2010++ فقط) لأداء هذه المهمة.

نصائح أخرى

لا العقل ،

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

يمكنك ببساطة يلقي عليه:

  a := @s[1];

العكس هو:

  s := PChar(a);

أعتقد يمكنك استخدام move إجراء مثل هذا على سبيل المثال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top