так если нет переменной, она обезличена входом ПОУ, сами же приводите код с использованием циклов, не будете же писать на десять переменных десять индивидуальных функциональны блоков для обработки. Тоже самое касается преобразований из одного типа в другой, компилятор будет ругаться если переменной одного типа, будете присваивать значение другого типа, а с указателями можно всё что угодно. Этой информации полно в инете, ликбез здесь не уместен, Вам уже писали что нет понимания что такое указатели, не стоит с ними и связываться.
Из порта Вы будете получать не строку, а массив байт из них сразу получить число намного легче, чем Ваши потуги в преобразовании строк, которые здесь вообще не нужны. Dword с маской 16#FFFF и два байтовых сравнения сделают "чудеса"
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Как пример: такой алгоритм будет верно работать для моего случая? или нужно создавать массив с большим количеством элементов?
Маскирование изучал в университете, но по прошествии 10 лет уже сложно вспомнить...можете на примере показать как преобразовать число из одной системы в другую путем маскирования?
VAR
ARR:ARRAY[1..3] OF WORD;
ARR_VALUE:ARRAY[1..3] OF WORD := 16#FFFF, 16#752A, 16#4B9C;
I:WORD;
STAGE:WORD;
VALUE:WORD;
END_VAR
ARR := ARR_VALUE;
IF I < 3 THEN
I := I +1;
IF ARR[ I ] = 16#FFFF THEN
VALUE := ARR[ I +1];
END_IF
ELSE
I := 0;
END_IF
вообще не то
исходные данные, прием из порта массива байт: FF FF 75 2A 4B 9C
указатели на байт, на двойное слово
Result:POINTER TO BYTE;
ptByte:POINTER TO BYTE;
ptDWord:POINTER TO DWORD;
value: WORD;
получаем данные из порта
SysComRead(0,ADR(Result),255,0)>0
в теле условия
ptByte:=Result;
и далее ищем начало посылки пока не выполнится условие
ptByte^:=16#FF и ptByte:=ptByte+1;ptByte^:=16#FF
если совпадение найдено
ptDWord:=Result;
можно смело отправлять в визуализацию результат
value:=DWORD_TO_WORD(ptDWord^ AND 16#FFFF);
Последний раз редактировалось capzap; 14.04.2017 в 13:19.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Пример сортировки массива, что вы привели работает лишь с массивом в 20 элементов. А если надо будет из 21 элементов? Копировать код?
a_char:=ADR(rcvBuf[iter]); (*записываем в a_char адрес ячейки массива с индексом iter*) -> а если напишем a_char:=(rcvBuf[iter]); что изменится?
Всё изменится. В одном из случаев компилятор выдаст ошибку, потому что не поймет, отчего вы в указатель хотите значение кинуть. Пока не поймёте, не используйте указатели. Могут возникнуть сложно уловимые ошибки, если с ними неправильно обращаться.