Вобщем я решил упростить свой код и переписать следующие функции с delphi на Vb.net.
Type
PParams = ^TParams;
TParams = packed record
Packet: array [0..100] of byte;
Param1,Param2,Param3: DWord;
Param4: array [1..100] of widechar;
end;
procedure StrToByte(bytecode:string; var aParams:TParams);
var
i:integer;
begin
i:=(length(bytecode) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to i do
aParams.Packet[i]:=strtoint('$'+bytecode[i*2+1]+bytecode[i*2+2]);
end;
Function GetByte(Aint: Integer):string;
Var
Bytes: array of Byte;
begin
Result:='';
SetLength(Bytes, SizeOf(AInt)); CopyMemory(Bytes, @Aint, SizeOf(AInt));
Result:=IntToHex(bytes[0],2)+IntToHex(bytes[1],2)+IntToHex(bytes[2],2)+IntToHex(bytes[3],2); SetLength(Bytes,0);
end;
Подчеркнутая часть кода мне не понятна. Поэтому прошу разъяснений, помочь понять.
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Вторая функция во многих языках одинаковая
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
CopyMemory(Bytes, @Aint, SizeOf(AInt)); копирует данные из AInt в Bytes, по длине AInt
SetLength(Bytes,0); Задает переменной Bytes максимальную длину 0, то есть чтобы туда не ввел длина этого текста будет равно нулю, в данным случае он будет пустым
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
Код Vb.net:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As UInteger, ByVal Source() As Byte, ByVal Length As Integer)
Private Function GetByte1(Aintt As UInteger) As String
Dim SzOf As Integer = System.Runtime.InteropServices.Marshal.SizeOf(Aint t)
Dim Bytes As Byte() = New Byte(SzOf) {}
CopyMemory(Aintt, Bytes, (SzOf))
For i = 0 To (Bytes.Count - 1)
Dim H1 As String = Hex(Bytes(i))
If Len(H1) = 1 Then
H1 = "0" & H1
End If
GetByte1 &= H1
Next
Переделал функцию:
Private Function GetByte(Aintt As UInteger) As String
Dim h0 As String
Dim h1 As String
Dim Bytes() As Byte = BitConverter.GetBytes(Aintt)
For i = 0 To (Bytes.Count - 1)
h1 = Hex(Bytes(i))
If Len(h1) = 1 Then
h0 &= "0"
End If
h0 &= h1
Next
Return h0
End Function
Добавлено через 7 часов 23 минуты
Цитата:
Сообщение от Ginrey
SetLength(Bytes,0);
Задает переменной Bytes максимальную длину 0, то есть чтобы туда не ввел длина этого текста будет равно нулю, в данным случае он будет пустым
Непонятно для чего=)
Последний раз редактировалось bestbeer; 13.05.2014 в 06:12.
Причина: Добавлено сообщение