|
#1
|
|||
|
|||
c# to delphi
помогите с конвертацией...
Код:
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
|
||||
|
||||
Кудесник, это куски от класса. Вне его они бессмыслены.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
Цитата:
Ну, даже до privat'а можно добраться через рефлекшн. Хотя это не суть. Суть в том, что для static-метода кишки класса не нужны, соответсвенно, он самоценен сам по себе (ну, если вообще в нем смысл есть ). Я не знаю зачем вообще это надо было переводить, т.к. в Delphi можно наверняка просто обратиться к памяти, где "лежит" строка. Но ТС не описал зачем ему это надо было, а мне было интересно кое-что проверить, вот и перевел. |
#6
|
|||
|
|||
Так как это метода класса формы, то для него и ставят private. ТС мог вообще его не указывать - по умолчанию он и так private.
А вообще, впервые вижу, что просят шарповский код перевести в делфийский. Обычно все наоборот. |
#7
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |