Мне нужен эквивалентный код для Delphi 5/6 - PullRequest
0 голосов
/ 30 марта 2011

Ниже приведен код для преобразования String Array в Byte Array.Я пытаюсь использовать WebService для получения двоичного файла.Он возвращает содержимое файла в строке, и я должен изменить его на байтовый массив .. Я смог сделать это с помощью кода ниже в C #, но не в Delphi 5 .. Ple

str isкакая-то строка.И я разделил его разделителем ','.

string[] byteArrayStr = str.Split(Convert.ToChar(","));

sbyte[] sbyteArray = new sbyte[byteArrayStr.Length];

         for(int i=0;i<sbyteArray.Length ;i++)
         {
             sbyteArray[i] = SByte.Parse(byteArrayStr.GetValue(i).ToString());
         }


         byte[] byteArray = new byte[sbyteArray.Length];
         Buffer.BlockCopy(sbyteArray, 0, byteArray, 0, sbyteArray.Length);
return byteArray;

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

Ajay, если вы получаете строку Ansi с разделителем ,, вы можете удалить этот символ, используя функцию StringReplace.

 YourNewString:=StringReplace(YourOriginalString,',','',[rfReplaceAll]);

отсюда вы можете получить доступэлементы новой строки, как и любой массив, основанный на индексе 1.

, если вы хотите преобразовать эту строку в массив байтов по любой другой конкретной причине, вы можете написать такую ​​функцию;

type
   TLongByteArray= array of Byte;

function StringToByteArray(InString:string):TLongByteArray;
Var
   Size :  Integer;
begin
   //remove the ,
   InString:=StringReplace(InString,',','',[rfReplaceAll]);
   Size:=length(InString);
   //set the length of the resulting array of bytes
   SetLength(Result,Size);       
   Move(InString[1],Result[0],Size);
end;

образец использования

var
  L : TLongByteArray;
  s : String;
begin

   s:='A,B,C,D,E';
   L:=StringToByteArray(s);
0 голосов
/ 30 марта 2011
uses JclStringLists;

function StringListToList(List: IJclStringList): TIntegerDynArray;
var
  I: Integer;
begin
  SetLength(Result, List.Count);
  for I := 0 to List.LastIndex do Result[I] := StrToInt(List[I]);
end;

function StrToIntegerList(const List: string): TIntegerDynArray;
begin
  Result := StringListToList(
      JclStringList.ExtractWords(List, [',']).DeleteBlanks.KeepIntegers
  );
end;

var
  MyIntegerArray: TIntegerDynArray;
begin
  MyIntegerArray := StrToIntegerList('1,5,6,7,1,23,123,12,9');
end.
...