
Сообщение от
Евгений Кислов
...про которые было известно, что размер указателя там равен 4 байта....
в таком случае это излишнее усложнение и строку
Код:
stop := (size - SIZEOF(pt)) / SIZEOF(pt);
можно было написать проще и понятнее для человека:
Код:
stop := (size - 4) / 4;
хотя, конечно для компилятора по итогу все равно, так как SIZEOF(pt) на начальном этапе компиляции заменяется на константу 4.
PS. кстати, я задался этим вопросом потому, что переделывал под себя пару ФБ из oscat_basic.
все блоки работающие с массивами в этой библиотеке предназначены для массивов REAL.
А мне нужны были для INT массивов.
Я, не долго думая, взял исходники и переделал их под INT, но допустил такую вот ошибку (выше)
PPS. вот в другом месте ребята этот вопрос решили по другому:
Код:
stop := SHR(size,2)-1;
но это мне было мне понято. побитовый сдвиг вправо на два знака, равносилен делению на 4,
и для работы с INT достаточно было сдвигать на 1, чтобы получить деление на 2.