Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Указатель файла и смещение




Всякий раз, когда вызывается функция readLine, в начале следующей строки автоматически помещается указатель файла. Смещение указателя файла — это число, обозначающее местоположение этого указателя относительно начала файла. При открытии файла его указатель помещается в начало файла с нулевым смещением.

Несмотря на то что указатель файла устанавливается автоматически по мере чтения содержимого файла, его положением можно управлять, если в этом есть необходимось. Это делается с помощью функции seek. А смещение указателя файла определяется с помощью функции filePos.

Для того чтобы воспользоваться функциями seek и filePos. выполните следующее упражнение.

1. Скопируйте файл seek.txt из каталога appendix на прилагаемом к этой книге CD-ROM в удобный для вас каталог на жестком лиске вашего компьютера

Этот файл содержит ряд двузначных чисел, разделенных пробелом.

2. Введите в приемнике команд следующий фрагмент кода, используя соот­ветствующий путь к файлу seek.txt:

fs = openFile "c:\\3dsmax8\\scripts\\seek.txt"

seek fs 6

readChars fs 2

В качестве результата в приемнике команд появится значение 53, которое означает, что двумя символами, прочитанными из данного файла на позиции 6, оказались числа 5 и 3.

3. Введите в приемнике команд следующую строку кода: filePos fs

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

4. Введите в приемнике команд следующую строку кода, чтобы закрыть файл:

close fs

Итак, для чтения из файла отдельных символов в приведенном выше упражнении была использована функция readChars. Если же воспользоваться функ­цией readLine, будет прочитана вся строка начиная с позиции 6. Для чтения единственного символа служит функция readchar.


Приложение

Для перемещения по файлу имеются еще две полезные функции: skipToNextLine и skipToString. В частности, функция skipToNextLine осуществляет переход к следующей строке, а функция skipToString — поиск конкретной строки символов и установку сразу же после нее указателя файла с соответствующим смещением. Функция skipToString оказывается полезной в том случае, если файл содержит дескрипторы — текстовые ограничители, которые вводятся в файл для того, чтобы упростить поиск в нем отдельных элементов.

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

1. Установите 3dsMax в исходное состояние.

2. Скопируйте файл skiptostring.txt из каталога appendix, на прилагаемом к этой книге CD-ROM, в удобный для вас каталог на жестком диске вашего компьютера.

3. Откройте файл skiptostring.txt в текстовом редакторе WindowsNotepad.

Он содержит следующее:

$$hsegs 10

$$height 50

$$radius

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

4. Закройте текстовый редактор WindowsNotepad.

5. Введите в окне редактора сценариев MAXScript Editor следующую строку кода, правильно указав в ней путь к файлу skiptostring.txt:

fs = openFile "c:\\3dsmax8\\scripts\\skiptostring.txt" Указанный файл откроется.

6. Введите следующий фрагмент кода для чтения и поиска текста в открытом файле:

skipToString fs "$$height"

h = readValue fs

seek fs 0

skipToString fs "$$hsegs"

hs = readValue fs

seek fs 0

skipToString fs "$$radius"

r = readValue fs

Функция skipToString обнаруживает дескриптор файла. Но она отнюдь не всегда начинает поиск с текущего смещения указателя файла. Поэтому сначала нужно установить указатель в начало файла с помощью функции seek, а затем начать поиск. Дескрипторы можно искать в любом порядке.


Приложение

7. Закройте файл и создайте цилиндр, используя считанные из него данные:

close fs

c = cylinder radius: r height: h heightsegs: hs

8. Выполните сценарий.

В этом сценарии считываются данные из файла и создается цилиндр с параметрами, указанными в файле. Несмотря на то что значение 20 радиуса находится в строке файла skiptostring.txt после текста $$radius, это значение читается в сценарии правильно.




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 1250; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.