Assign в паскале что это
Перейти к содержимому

Assign в паскале что это

  • автор:

Оператор присваивания

В качестве переменной может быть простая переменная, разыменованный указатель, переменная с индексами или компонент переменной типа запись. Символ := называется значком присваивания. Выражение должно быть совместимо по присваиванию с переменной.

Оператор присваивания заменяет текущее значение переменной значением выражения.

i := i + 1; // увеличивает значение переменной i на 1

В PascalABC.NET определены также операторы присваивания со значками += , -= , *= , /= . Для числовых типов действие данных операторов описано здесь. Кроме того, использование операторов += и *= для строк описано здесь и операторов += , -= и *= для множеств — здесь. Их действие для процедурных переменных описано здесь.

Операторы += , -= , *= , /= имеют следующий смысл: a #= b означает a := a # b , где # — знак операции + , — , * , / .

a += 3; // увеличить a на 3
b *= 2; // увеличить b в 2 раза

Опертор /= неприменим, если выражение слева — целое.

Операторы += , -= , *= , /= могут также использоваться со свойствами классов соответствующих типов в левой части.

Assign в паскале что это

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

Закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой ASSIGN, сохраняется. Формат обращения:

При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Функции процедуры CLOSE выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть без дополнительного использования процедуры ASSIGN.

Переименовывает файл. Формат обращения:

Здесь — строковое выражение, содержащее новое имя файла. Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.

Уничтожает-файл. Формат обращения:

Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.

Следующий фрагмент программы показывает, как можно использовать процедуры RENAME и CLOSE при работе с файлами. Предположим, что требуется отредактировать файл, имя которого содержит переменная NAME. Перед редактированием необходимо убедиться, что нужный файл имеется на диске, и переименовать его — заменить расширение этого файла на ВАК (страховочная копия). Если файл с таким расширением уже существует, его надо стереть.

k := length(name) +1;

name_bak := copy(name,1,k-1) + bak;

if lOResult <> 0 then

if lOResult = 0 then

Обратите внимание: проверка на существование файла .ВАК в данном примере необходима, так как обращение

вызовет ошибку в случае, если такой файл существует.

Очищает внутренний буфер файла и, таким образом, гарантирует сохранность всех последних изменений файла на диске. Формат обращения:

Любое обращение к файлу в Турбо Паскале осуществляется через некоторый буфер, что необходимо для согласования внутреннего представления файлового компонента (записи) с принятым в ДОС форматом хранения данных на диске. В ходе выполнения процедуры FLUSH все новые записи будут действительно записаны на диск. Процедура игнорируется, если файл был инициирован для чтения процедурой RESET.

Функция EOF () : BOOLEAN.

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

Изменение текущего каталога. Формат обращения:

Здесь — строковое выражение, содержащее путь к устанавливаемому по умолчанию каталогу.

Позволяет определить имя текущего каталога (каталога по умолчанию). Формат обращения:

Здесь — выражение типа WORD , содержащее номер устройства: 0 — устройство по умолчанию, 1 — диск А, 2 — диск В и т.д.;

— переменная типа STRING, в которой возвращается путь к текущему каталогу на указанном диске.

Создает новый каталог на указанном диске. Формат обращения:

Здесь — выражение типа STRING, задающее путь к каталогу. Последним именем в пути, т.е. именем вновь создаваемого каталога не может быть имя уже существующего каталога.^

Удаляет каталог. Формат обращения:

Удаляемый каталог должен быть пустым, т.е. не содержать файлов или имен каталогов нижнего уровня.

Функция IORESULT: WORD.

Возвращает условный признак последней операции ввода-вывода.

Если операция завершилась успешно, функция возвращает ноль. Коды ошибочных операций ввода-вывода представлены в прил.З. Следует помнить, что IORESULT становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора отключает, а директива включает автоконтроль. Если автоконтроль отключен, а операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT.

Ряд полезных файловых процедур и функций становится доступным при использовании библиотечного модуля DOS.TPU, входящего в стандартную библиотеку TURBO. TPL . Эти процедуры и функции указаны ниже. Доступ к ним возможен только после объявления USES DOS в начале программы (подробнее о работе с модулями см. гл.9).

Функция DISKFREE () : LONGINT.

Возвращает объем в байтах свободного пространства на указанном диске. При обращении к функции выражение типа BYTE определяет номер диска: 0 — устройство по умолчанию, 1 — диск А , 2 — диск В и т.д. Функция возвращает значение -1, если указан номер несуществующего диска.

Функция DISKSIZE () : LONGINT.

Возвращает полный объем диска в байтах или -1 , если указан номер несуществующего диска.

Возвращает атрибуты первого из файлов, зарегистрированных в указанном каталоге. Формат обращения:

Здесь — строковое выражение, содержащее маску файла;

— выражение типа BYTE, содержащее уточнение к маске (атрибуты); — переменная типа SEARCHREC, в которой будет возвращено имя файла.

При формировании маски файла используются следующие символы-заменители ДОС:

* означает, что на месте этого символа может стоять сколько угодно (в том числе ноль) разрешенных символов имени или расширения файла;

? означает, что на месте этого символа может стоять один из разрешенных символов.

* . * выбирает все файлы из каталога;

с* . * выбирает все файлы с именами, начинающимися на с (cl.pas,сс!2345, c.dat и т.д.);

a?.dat выбирает имена файлов типа a0.dat, az.dat и т.д.

Маске может предшествовать путь’. Например, команда

эзначает выбирать все файлы с расширением .PAS из каталога SUBDIR, находящегося на диске С; каталог SUBDIR зарегистрирован в каталоге верхнего уровня DIR, который, в свою очередь, входит в корневой каталог.

Байт содержит двоичные разряды (биты), уточняющие, к каким именно файлам разрешен доступ при обращении к процедуре FINDFIRST . Вот как объявляются файловые атрибуты в модуле DOS. TPU:

Комбинацией бит в этом байте можно указывать самые разные варианты, например $ 06 — выбирать все скрытые и/или системные файлы.

Результат работы процедуры FINDFIRST возвращается в переменной типа SEARCHREC. Этот тип в модуле DOS. TPU определяется следующим образом:

Fill : array [1..21] of Byte;

Здесь Attr — атрибуты файла (см. выше);

Time — время создания или последнего обновления файла; возвращается в упакованном формате; распаковать параметр можно процедурой UNPACKTIME (см.ниже);

Size — длина файла в байтах;

Name — имя и расширение файла. Для распаковки параметра TIME используется процедура

UNPACKTIME(Time: Longlnt; var T:DateTime).

В модуле DOS. TPU объявлен следующий тип DateTime:

Результат обращения к процедуре FINDFIRST можно проконтролировать с помощью функции DOSERROR типа WORD, которая возвращает значения:

2 — не найден каталог;

18 — каталог пуст (нет указанных файлов).

Возвращает имя следующего файла в каталоге. Формат обращения:

Здесь — запись типа SEARCHREC (см. выше), в которой возвращается информация о файле.

Следующая простая программа иллюстрирует способ использования процедур FINDFIRST и FINDNEXT. Программа выводит на экран список всех PAS-файлов текущего каталога:

while DosError = 0 do begin

Возвращает время создания или последнего обновления файла. Формат обращения:

Здесь — переменная типа LONGINT, в которой возвращается время в упакованном формате.

Устанавливает новую дату создания или обновления файла. Формат обращения:

Здесь — время и дата в упакованном формате.

Упаковать запись типа DATETIME в переменную типа LONGINT можно процедурой

PACKTIME (var T:DateTime; var Time:LongInt).

(Описание типа DA TETIME см. выше).

Позволяет получить атрибуты файла. Формат обращения:

Здесь — переменная типа WORD, в младшем байте которой возвращаются устанавливаемые атрибуты файла.

Позволяет установить атрибуты файла. Формат обращения:

Функция FSEARCH: PATHSTR.

Ищет файл в списке каталогов. Формат вызова:

Здесь — имя отыскиваемого файла (строковое выражение или переменная типа PATHSTR; имени может предшествовать путь); — список каталогов, в которых отыскивается файл (строковое выражение или переменная типа STRING); имена каталогов разделяются точкой с запятой.

Результат поиска возвращается функцией FSEARCH в виде строки типа PATHSTR. В строке содержится путь и имя файла, если поиск был успешным, в противном случае возвращается пустая строка.

Тип PATHSTR в модуле DOS.TPU объявлен следующим образом:

Следует учесть, что поиск файла всегда начинается в текущем каталоге и только после этого продолжается в тех, что перечислены в . Если файл обнаружен, дальнейший поиск прекращается, даже если часть каталогов осталась непросмотренной. В частности, если файл зарегистрирован в текущем каталоге, он «заслонит» собой одноименные файлы в других каталогах.

Пусть, например, на диске имеется файл \SUBDIR\MYFILE.PAS. Тогда в случае, если текущий каталог — корневой, обращение

FSEARCH (‘MYFILE,PAS’,’\SUB; \SUBDIR’).

вернет строку \SUBDIR\MYFILE.PAS, а обращение

вернет пустую строку. Однако, если текущим установлен каталог SUBDIR, то в обоих случаях вернется строка MYFILE.PAS (если файл находится в текущем каталоге,в выходной строке путь к нему не указывается).

«Расщепляет» имя файла, т.е. возвращает в качестве отдельных параметров путь к файлу, его имя и расширение. Формат обращения:

Здесь — строковое выражение, содержащее спецификацию файла (имя с расширением и, возможно, с предшествующим путем);

— переменная типа DIRSTR=STRING [67], в которой возвращается путь к файлу;

— переменная типа NAMESTR=STRING [8], в которой возвращается имя файла;

— переменная типа EXTSTR=STRING [4], в которой возвращается расширение с предшествующей ему точкой.

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

Функция FEXPAND: PATHSTR.

Дополняет файловое имя до полной спецификации, т.е. с указанием устройства и пути. Формат вызова:

Здесь — строковое выражение или переменная типа PATHSTR.

Функция не проверяет наличие указанного файла на диске, а просто дополняет имя файла недостающими параметрами — текущим устройством и путем к текущему каталогу. Результат возвращается в строке типа PATHSTR.

Процедура Assign

Основы программирования 2.0

Процедура Assign в Паскале связывает переменную с файлом. Синтаксис:

procedure Assign(out F: file; const Name: ShortString); procedure Assign(out F: file; const p: PAnsiChar); procedure Assign(out F: file; const c: AnsiChar); procedure Assign(out F: file; const Name: UnicodeString); procedure Assign(out F: file; const Name: RawByteString); procedure Assign(out F: TypedFile; const Name: shortstring); procedure Assign(out F: TypedFile; const p: PAnsiChar); procedure Assign(out F: TypedFile; const c: AnsiChar); procedure Assign(out F: TypedFile; const Name: unicodestring); procedure Assign(out F: TypedFile; const Name: RawByteString); procedure Assign(out F: Text; const s: shortstring); procedure Assign(out F: Text; const p: PAnsiChar); procedure Assign(out F: Text; const c: AnsiChar); procedure Assign(out F: Text; const s: unicodestring); procedure Assign(out F: Text; const s: RawByteString);

Как связать файл с переменной в Паскале

Процедура Assign связывает переменную F с файлом какого-либо типа. После этого в программе можно использовать переменную F для работы с указанным файлом.

Вызов процедуры Assign не открывает файл, а только связывает имя файловой переменной F с файлом на диске. При этом файл отмечается как закрытый.

Как видно из синтаксиса процедуры, файл может быть как типизированным, так и не типизированным.

Как объявить файловую переменную

Перед вызовом процедуры файловая переменная, которая передаётся в процедуру, должна быть объявлена. Делается это примерно так:

iFile : file of integer; //Типизированная файловая переменная tFile : Text; //Нетипизированная файловая переменная

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

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

Далее приведён пример программы, где рассмотрена работа как с типизированными, так и с нетипизированными файловыми переменными.

program assignproc; var F : Text; iFile : file of Integer; //Типизированная файловая переменная tFile : Text; //Нетипизированная файловая переменная i : Integer; begin Assign(F, ''); ReWrite(F); //Следующее может быть помещено в любой файл, //перенаправленный из командной строки. //Это будет передано на стандартный вывод WriteLn(F, 'This goes to standard output!'); Close(F); Assign(F, 'Test.txt'); ReWrite(F); //Это НЕ будет передано на стандартный вывод, //но будет записано в файл Test.txt WriteLn(F, 'This doesn''t go to standard output!'); Close(F); Assign(iFile, 'itest.dat'); ReWrite(iFile); //Записываем 8 чисел от 1 до 8 в файл itest.dat for i := 1 to 8 do Write(iFile, i); Close(iFile); Assign(tFile, 'ttest.txt'); ReWrite(tFile); //Записываем 8 строк в файл ttest.txt for i := 1 to 8 do WriteLn(tFile, 'Line ', i); Close(tFile); ReadLn; end.

Процедура Assign Pascal-Паскаль

Assign — Назначает файловой переменной имя внешнего файла.

Объявление: Procedure Assign(Var F; Name : String);
Режим: Windows, Real, Protected

Замечания:

Параметр F — файловая переменная любого файлового типа, а Name — выражение со строковым типом или выражение типа PChar, если допускается расширенный синтаксис. Все дальнейшие операции с переменной F на самом деле происходят с внешним файлом с именем Name.

После обращения к Assign, связь между переменной F и внешним файлом продолжает существовать до тех пор, пока для переменной F не будет сделано еще одно переназначение.

Имя файла состоит из пути — нулевого или большего количества имен каталогов, разделенных левыми наклонными чертами, сопровождаемого собственно именем файла:

Пример указания пути для процедуры Assign

Drive:\DirName\. \DirName\FileName.Ext

Если путь начинается с левой наклонной черты, то он находится в корневом каталоге, иначе, он находится в текущем каталоге.

Drive — идентификатор дисковода (A-Z). Если Drive и двоеточие опущены, то используется заданный по умолчанию дисковод. \DirName\. \DirName — корневой каталог и подкаталоги в пути к файлу. Имя файла состоит из имени, длиной до восьми символов, возможно сопровождаемых точкой и расширения, длиной до трех символов. Максимальная длина всего имени файла вместе с путем — 79 символов.

Если String — пустая строка, то есть когда Length(Name) равно нулю, то возникает специальный случай и переменная F становится связанной со стандартным файлом ввода или вывода. Эти специальные файлы позволяют программе использовать возможность операционной системы DOS — возможность переназначения ввода/вывода.

Если переменной F назначено пустое имя, то после обращения к Reset(F), F относится к стандартному устройству ввода, а после обращения к ReWrite(F), F относится к стандартному устройству вывода.

Ограничения:

Assign не может использоваться для открытых файлов.

Пример программы для процедуры Assign.

  • Append
  • Close
  • Reset
  • ReWrite

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *