Показать сообщение отдельно
Старый 16.02.2013, 08:52   #1
Новичок
 
Регистрация: 20.04.2012
Сообщений: 4
Сказал Спасибо: 0
Имеет 2 спасибок в 2 сообщенях
cmdprompt пока неопределено
По умолчанию Отличия версий l2phx

В версии phx 3.4 конструкция вида if pck[1]=#3 работала нормально, но в 3.35.33.172 переменная pck как будто не массив, и обращаться к байтам по индеску не получается. Работает только ReadC(1), поэтому конструкция вида case pck[1] of превратилась в case ReadC(1) of и от этого изменилось вот что, если пакет состоит только из 1 байта, то ReadC(1) возвращает 0 или каке-то неверное значение, поэтому этой с помощю этой функции нельзя работать с такими пакетами. Приходится добавлять в оператор выбора действие по умолчанию, например else if pck=#9 then. Странно, что такое сравнение работает, в отличии от if pck[1]=#9 например.

Простое case pck[1] of превратилось в сложное
case ReadC(1) of // для многобайтных пакетов
1:...
2:...
else case pck of // для однобайтных пакетов
#3:..
#4:..
end;
end;


Но это не основное неудобство, самые костыли получаются тогда, когда надо изменить входящий пакет перед отправкой, если раньше можно было например изменить байт пакета так pck[2]:=#0;, то теперь это превращается в такой велосипед: buf:=pck; pck:=''; WriteC(0,2); SendToServer; ужас.

Подскажите, кто сталкивался с такой проблемой, это особенность только моей версии 3.5.33.172 или всех 3.5?

Последний раз редактировалось cmdprompt, 16.02.2013 в 09:08.
cmdprompt вне форума   Ответить с цитированием