Delphi, Copy string to Byte array

29,679

Solution 1

Beware using the Move. If you are using Delphi 2009, it may fail. Instead, use this:

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

You may also use class TEncoding in SysUtils.pas (Delphi 2009/2010++ only) to perform the task.

Solution 2

You can simply cast it:

  a := @s[1];

The other way around is:

  s := PChar(a);

Solution 3

never mind, found it

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

Solution 4

I think you can use move procedure just like in this example

Share:
29,679
Christopher Chase
Author by

Christopher Chase

OO Languages (Delphi/FPC) Databases (NexusDB/MySQL/MSSQL) FreeBSD GUI design Object-Relational Mapping with PropelORM Programming for Android Publish and Subscribe servers, noticeably Elvin

Updated on July 09, 2022

Comments

  • Christopher Chase
    Christopher Chase almost 2 years

    what i have works, but im looking if there is a faster way to copy a string into a pByteArray

    from sysutils

      PByteArray = ^TByteArray;
      TByteArray = array[0..32767] of Byte;
    

    assume a and s are setup correctly

     a:   pByteArray;
     s:   string;
    

    is there a fast way to do this, ie something like copy

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

    delphi 7