![]() |
|
|
#1
|
|||
|
|||
|
помогите с конвертацией...
Код:
private static byte[] one( string str )
{
byte[] abRetVal = null;
if ( str.Length > 0 )
{
abRetVal = new byte[ str.Length + 1 ];
for ( int i = 0 ; i < str.Length ; i++ )
{
abRetVal[ i ] = Convert.ToByte( str[ i ] );
}
abRetVal[ str.Length ] = 0;
}
return abRetVal;
}
private static string two( byte[] array )
{
int col = 0;
string strRetVal = null;
if ( array.Length > 0 )
{
for ( int i = 0 ; i < array.Length ; i++ )
{
if ( array[ i ] == 0 )
{
break;
}
col++;
}
char[] CharArray = new char[ col ];
for ( int i = 0 ; i < col ; i++ )
{
CharArray[ i ] = System.Convert.ToChar( array[ i ] ) ;
}
strRetVal = new string( CharArray );
}
return strRetVal;
} |
|
#2
|
||||
|
||||
|
Кудесник, это куски от класса. Вне его они бессмыслены.
|
|
#3
|
|||
|
|||
|
angvelem, Вы не правы.
Эти методы статические, т.е. могут быть вызваны без создания экземпляра класса. Аналог в Delphi - class function. Вопрос только в том, что первый метод в Delphi не нужен, т.к. к строке можно и так обращаться как к массиву char, а перевод в цифру - Ord(string[i]). Второй будет выглядеть примерно так (ну и до кучи первый метод и проверка): Код:
type
TByteArray = array of byte;
function StringToByteArray(S : String) : TByteArray;
var
I : Integer;
begin
SetLength(Result,Length(S)+1);
For I := 1 To Length(S) Do
Result[I-1] := Ord(S[i]);
Result[High(Result)] := 0;
end;
function ByteArrayToString(A : TByteArray) : String;
var
I : Integer;
begin
Result := '';
For I := Low(A) To High(A) Do
If A[i] = 0
Then break
Else Result := Result + Chr(A[i]));
end;
begin
WriteLn(ByteArrayToString(StringToByteArray('ABC')));
end;Код должен вывести ABC. |
|
#4
|
||||
|
||||
|
К сожалению, я не настолько хорошо знаю С, меня смутило private.
|
|
#5
|
|||
|
|||
|
Цитата:
Ну, даже до privat'а можно добраться через рефлекшн. Хотя это не суть. Суть в том, что для static-метода кишки класса не нужны, соответсвенно, он самоценен сам по себе (ну, если вообще в нем смысл есть ). Я не знаю зачем вообще это надо было переводить, т.к. в Delphi можно наверняка просто обратиться к памяти, где "лежит" строка. Но ТС не описал зачем ему это надо было, а мне было интересно кое-что проверить, вот и перевел. |
|
#6
|
|||
|
|||
|
Так как это метода класса формы, то для него и ставят private. ТС мог вообще его не указывать - по умолчанию он и так private.
А вообще, впервые вижу, что просят шарповский код перевести в делфийский. Обычно все наоборот. |
|
#7
|
||||
|
||||
|
Цитата:
|