К языковым средствам обслуживания наборов данных необходимо отнести процедуры переименования и удаления неоткрытых файлов. Использование этих процедур не зависит от типа файла.
Процедура Rename(f : file; NewName : string); переименовывает неоткрытый файл f любого типа. Новое имя задается строкой NewName.
Процедура Erase(f : file); удаляет неоткрытый внешний файл любого типа, задаваемый переменной f.
Обе процедуры нельзя использовать для уже открытых файлов. В противном случае могут возникнуть нежелательные последствия со стороны операционной системы. Единственным стандартным шагом перед использованием процедур является установка связи между внешним файлом с конкретным именем и файловой переменной. Операции удаления и переименования осуществляются только для реально существующих файлов, иначе возникает ошибка выполнения программы.
Пример для Pascal. Удаление и переименование файла.
Write(‘Введите имя файла : ‘);
Readln(St);
Assign(f, St);
Простой калькулятор на Pascal /pascal programming lesson #1
Wгite(‘Удалить файл (У), Переименовать(П), Выход(В)’);
‘П’,’п’ : begin
Write(‘Введите новое имя файла : ‘);
‘В’,’в’ : halt(l);
3.2.2. Типизированные файлы.
К типизированным файлам относятся файлы строго определенного типа. Стандартное задание в программе такой файловой переменной осуществляется следующим образом:
FileRec = record
Var Ft : file of FileRec;
1. Длина записи.
Если в текстовых файлах содержимое рассматривается как наборы символов, подготовленные специальным образом с учетом общепринягтых соглашений о представлении текстовой информации, то в типизированных файлах их содержимое рассматривается как последовательность записей определенного типа. Единицей измерения такого набора данных является сама запись. Длина записи определяется как Sizeof(FileRec).
2. Позиционирование записи в файле.
Процедура Seek(f; NumRec: Longint) устанавливает текущую файловую переменную f на запись с номером NumRec; f — файловая переменная для типизированных и нетипизированных наборов данных. При открытии типизированного файла текущая позиция для работы с ним установлена на начало первой записи, которая по принятым соглашениям имеет номер 0, т.е. номер физической записи на единицу меньше номера логической записи. Это небольшое несоответ-
ствие в номерах может служить причиной возникновения ошибок чтения-записи, что в результате может привести к нарушению целостности важной информации. Положение усугубляется тем, что неверное позиционирование на запись с помощью процедуры Seek, как правило, не приводит к каким-либо видимым ошибкам ввода-вывода, на которые всегда можно отреагировать. Исключение составляют ситуации, когда нет доступа к файлу, файл не открыт или назначено позиционирование на несуществующую запись, такие ситуации обрабатываются с помощью функции lOresult.
Типизированные файлы ( в отличие от текстовых) позволяют организовать работу в режиме чтения-записи. Эта возможность играет решающую роль при определении, каким типам файлов отдать предпочтение для большинства прикладных задач. Информация в типизированных наборах данных представлена в том же виде, как и в памяти машины во время выполнения программы, поэтому не надо отслеживать управляющие последовательности типа конец строки или возврат каретки. Идентификация соответствия типа записи и конкретной физической информации требует незначительной части ресурсов системы.
простейшая программа в Паскале
3. Вспомогательные функции FilePos и File Size.
Для работы с файлами прямого доступа используются две специальные функции:
FilePos(F) : Longint — возвращает для файла F текущую файловую позицию (номер записи, на которую она установлена) в виде значения типа Longint;
FileSize(F) : Longint — возвращает для файла F его размер (количество записей) в виде значения типа Longint.
Для пустого файла вызов FileSize возвращает значение 0. Локализация ошибок при обращении к внешним носителям для обоих функций производится через lOresult.
Для того чтобы очередная запись могла быть записана в конец типизированного файла, необходимо перевести текущую файловую позицию в конец файла. Когда создается новый файл, это происходит автоматически после формирования каждой очередной записи. Если файл ухе создан и файловая позиция, установленная по Seek(), находится где-нибудь в начале файла (FilePos(F) < FileSize(F)), то в конец файла ее позволяет перевести вызов Seek(F, FileSize(F));
В каждом файле число логических и физических записей совпадает, а при позиционировании номер физической записи на единицу меньше номера логической записи.
Пример для Pascal:
Type Klient= record
Marka : string[20];
FIO : string[40];
Var M : Klient;
F : file of Klient;
With M do begin Number :=43;
Marka :=’Запорожец’;
FIO := ‘Ильин М.И.’;
Adres :=’ул. Болтунов, 5′ end;
Assign(f,’RecKl.ttt’);
- Что такое запись и из чего она состоит?
- Какие есть способы обращения к полям записи?
- Перечислите основные действия при работе с файлами.
- Что такое файловая переменная и как ее использовать?
- Обязательно ли задавать полное имя открываемого файла (со всем путем к нему)?
- В чем отличие типизированного файла от нетипизированного?
- В чем приемущество нетекстовых файлов от текстовых? В каких случаях удобно исползовать те и другие?
Источник: studfile.net
Процедура Rename
Процедура Rename в Паскале переименовывает файл на диске. Синтаксис:
procedure Rename(var F: file; const S: ShortString); procedure Rename(var F: file; const S: PAnsiChar); procedure Rename(var F: file; const S: AnsiChar); procedure Rename(var F: file; const S: UnicodeString); procedure Rename(var F: file; const S: RawByteString); procedure Rename(var F: Text; const S: shortstring); procedure Rename(var F: Text; const S: PAnsiChar); procedure Rename(var F: Text; const S: AnsiChar); procedure Rename(var F: Text; const S: unicodestring); procedure Rename(var F: Text; const S: RawByteString);
Процедура изменяет имя файла, с которым связана файловая переменная F , которая передаётся через первый параметр. Новое имя передаётся через второй параметр S .
С переменной F должен быть связан файл, но этот файл не должен быть открыт.
В зависимости от состояния переключателя при возникновении ошибки может быть сгенерирована ошибка времени выполнения. В состоянии используйте IOResult для проверки на наличие ошибок.
program myprog; var F : System.Text; begin Assign(F, ‘myfile.txt’); Rename(F, ‘new_myfile.txt’); WriteLn(‘Then end. Press ENTER. ‘); ReadLn; end.
На этом всё. Чтобы не пропустить новости, подключайтесь к Телеграм-каналу или к другим моим каналам и рассылкам (ссылки ниже).
Источник: info-master.su
Как переименовать программу в паскале
: 7
rename в Pascal ABC
Не получается переименовать файл в Pascal ABC. При выполнении программы на операции rename появляется ошибка: «Ошибка переименования файла». Переименовываемый файл присутствует, права на изменения есть, файл нормально открывается оператором reset, перед переименованием файл закрыт.
Может проблема в программе, но ошибка получается даже с таким:
uses crt; var f:file of string; s1,s2:string; begin s2:=’zzz.dan’; assign(f,s2); readln(s1); rename(f,s1); end.
Скажите, пожалуйста, с чем это может быть связано?
Я на всякий случай прикрепил программу, но по мне кажется не в ней дело.
Вложения
programma.txt (24.3 Кб, 127 просмотров) |
Последний раз редактировалось Вадим Мошев; 26.12.2015 в 15:38 .
Источник: www.programmersforum.ru