2011-03-30 2 views
0

文字列配列をバイト配列に変換する以下のコードがあります。 WebServiceを使用してバイナリファイルを取得しようとしています。それは文字列のファイルの内容を返し、私はバイト配列に変更する必要があります..私はC#の下のコードではできますが、Delphi 5ではできません.. Ple私はDelphi 5/6に相当するコードが必要です

strはいくつかの文字列です。そして私は区切り記号でそれを分割しました '、'。

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; 

答えて

4

アジャイ、あなたはStringReplace機能を使用してこの文字を削除することができます,区切り文字でANSI文字列を受信して​​いる場合。ここから

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

+1のサンプル。私がsplit()について忘れたものをキャッチしてくれてありがとう。 –

0
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. 
関連する問題