В PowerBuilder, как установить byte [] на ноль? - PullRequest
0 голосов
/ 15 апреля 2020

Я вызываю данные из .dll, мне нужно иметь NULL, чтобы пропустить некоторые случаи.

int Fn(ref byte xpara[])
setnull(xpara)

Приведенный выше код дал мне ошибку, и setnull () не работает для байта []

Поскольку данные из .dll могут содержать 0, я использую байт [], чтобы избежать остановки на 0. В некоторых случаях мне все еще нужно установить нулевой байт [].

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Независимо от типа данных, вы не можете использовать SetNull для структуры или массива.

Чтобы сбросить массив, определите другую переменную, для которой вы никогда не добавите какие-либо записи, и назначьте ее той, которую нужно сбросить.

Строка ls_files [], ls_empty []

ls_files = ls_empty

0 голосов
/ 15 апреля 2020

Вы не можете установить тип массива в Null в PowerBuilder *. Лучшее, что вы можете сделать, - это повторно инициализировать аргумент массива в локальную переменную byte[], которая не была назначена.

function integer Fn(ref byte xpara[]);

   byte l_null[]

   // zero-out the referenced byte array
   xpara = l_null

   return 1

end function

Затем вы можете проверить длину ссылочного аргумента из вызывающей стороны (то есть: UpperBound(byteArray).

* Вы можете установить для него значение NULL, но вызывающая сторона в итоге получит ошибку нулевого объекта, если попытается что-либо сделать (например: byteArray[1] = 1) с ним.

...