В версии 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?