как считаете, если у массива нет нулевого индекса и Вы присваиваете переменной, отвечающей за индекс, нуль, то куда пишет функция свои данные? Видимо по тому адресу где Вы наблюдаете их.

И как дополнение: попробуйте в функции добавить в var переменную
Код:
ptStr : POINTER TO STRING(6);
и в код добавте
Код:
ptStr:=ADR(buf1);p[param].sms_name:=ptStr^;
в место
Код:
p[param].sms_name:=BiteArr6ToStr(buf1,buf2,buf3,buf4,buf5,buf6);