Интерактивное графическое программное обеспечение PC-DMIS (Глава 25: Использование ввода/вывода файла), страница 4

Пример кода для Read Line (чтение строки)

Изучите этот пример, который читает из файла с данными по одной строке до тех пор, команда FILE/READ_LINE не встретит пустую строку. Затем программа детали выведет полученный блок текста и завершится.

V1=FILE/EXISTS,test.txt

IF/V1<>0

COMMENT/OPER,Able to read from data file. Click OK to continue.

ASSIGN/V3 = ""

FPTR=FILE/OPEN,D:\Program Files\pcdmis35\test.txt,READ

DO/

V2=FILE/READLINE,FPTR,{LINE}

ASSIGN/V3 = V3 + LINE

COMMENT/OPER,"The current value of variable V3 is:

,V3

UNTIL/V2 == "EOF"

FILE/CLOSE,FPTR

COMMENT/OPER,"The block of text reads as follows: "

,V3

END_IF/

ELSE/

COMMENT/OPER,Wasn't able to read from data file. Program will now quit.

GOTO/END

END_ELSE/

END=LABEL/

PROGRAM/END

Пояснение кода

Многое в этом коде похоже на код, описанный в "Пример кода для Read Character". Здесь приводится пояснение кода, встречающееся только в этом примере.

DO Эта строка начинает цикл DO / UNTIL. Он включает в себя код FILE/READ_LINE, так что строки последовательно считываются по одной. Выход из цикла выполняется, когда достигается конец файла.

V2=FILE/READLINE,FPTR,{LINE} Эта строка считывает весь текст до тех пор, пока не встретится символ возврата каретки. Вместо хранения текста в V2, как было в FILE/READ_CHARACTER, этот код действует по-другому.

·  В этом случае V2 возвращает два значения: "OK" либо "EOF" (конец файла). "OK" – если еще есть строка, которую можно считать. "EOF" – если достигнут конец файла.

·  Код {LINE} является вводимой пользователем переменной, которая хранит текущий текст. Он заключен в фигурные скобки для того, чтобы сообщить PC-DMIS, что это переменная, а не часть разграничивающего текста. Без фигурных скобок, PC-DMIS искал бы последовательность символов в файле под названием "LINE" и возвратил бы только текст после "LINE" и до возврата каретки.

ASSIGN/V3 = V3+LINE Эта строка использует пустую переменную V3 и объединяет последовательность символов V3 с LINE, а затем переназначает объединенное значение переменной V3. Таким образом, с каждым выполнением цикла DO/UNTIL, к V3 добавляется по одной строке.

UNTIL/V2 == "EOF" Эта строка проверяет состояние цикла DO / UNTIL. Когда код FILE/READLINE обнаружит конец файла, произойдет выход из цикла. После того, как ход выполнения программы покинет цикл, будет завершено выполнение остатка кода и будет отображен весь блок кода в комментарии оператора.

Прочие примеры: Командная строка: Result = File/ReadLine,F1, "Part ID:"   + {V1} приведет к тому, что любой текст, находящийся в считываемой строке после текста "Part ID:" будет назначен переменной V1. Строка будет считана из файла, открытого с использованием F1 в качестве имени указателя. Результат чтения (успех или неуспех) будет сохранен в переменной Result. Командные строки: File/ReadLine,F1, "Location:"+{VARX}+ ","+{VARY}+ ","+{VARZ}+ ","+{VARI}+ ","+{VARJ}+ ","+{VARK} ASSIGN/CIR1.XYZ = MPOINT(VARX, VARY, VARZ) ASSIGN/CIR1.IJK = MPOINT(VARI, VARJ, VARK) прочитают ограниченный запятыми текст после последовательности символов "Location:" и сохранят значения в X, Y, Z, и I, J, K значения CIR1. Командная строка: File/ReadLine,F1, "Value # " + loopvar + " : " + {var2} приведет к тому, что var2 будет присвоен текст после двоеточия. Переменная loopvar в этом примере не окружена фигурными скобками и в результате входит в ограничивающий текст.

Чтение блока текста из файла

Пункт меню Utilities | File I / O | Reading Commands | Read Block (утилиты | ввод/вывод файла | команды чтения | читать блок) вставляет в окно Edit команду, которая считает блок параметров из открытого файла во время выполнения. Число считываемых знаков определяется параметром размера.

Синтаксис этой команды в окне Edit:

<varname>=File/Read_Block,<fptrname>,<size>