Pascal удалить строку из файла
В язык Паскаль выделяются данные файлового типа, которые служат для работы с информацией, расположенной на внешних устройствах. Эта информация формируется во внешней памяти компьютера, образуя некоторую область, называемую файлом. Файлы имеют имя и представляют собой совокупность однотипных элементов. Обычно они применяются, в случаях большого объема данных, долгосрочного хранения, либо необходимости предоставления доступа нескольким приложениям к одной и той же информации.
Файлы принято разделять на физические и логические. Физические файлы имеют имя, и располагаются на съемном носителе, а логические это те переменные файлового типа, которые их представляют в программе.
В Паскале различают следующие три вида файлов (в скобках описаны ключевые слова для инициализации файловой переменной):
- текстовые файлы ( text );
- типизированные ( file of <тип> );
- бестиповые ( file ).
1 Общие операции по работе с файлами
Немного позже мы разберемся с каждым из них. А сейчас рассмотрим основные операции для работы с файлами.
Создание файла
Assign(<имя файловой переменной>, <имя файла>)
Процедура Assign связывает переменную файлового типа с физическим файлом. Например, установить соответствие между переменной Fil и текстовым файлом lot , расположенном на диске D , можно так:
Режим чтения
Reset(<имя файловой переменной>)
Процедура Reset открывает файл в режиме чтения, после чего оператором Read(<файловая переменная>, <считываемый элемент>) можно осуществить последовательное считывание элементов в программу.
Конец файла
ЕOF(<имя файловой переменной>)
Количество элементов в файле заранее не определяется, но часто необходимо знать о моменте достижения конца файла. Для этого в Паскале существует логическая функция EOF , которая проверяет достигнут ли конец, и если это так, то принимает значение True , иначе – False . Осуществляется проверка, как правило, в цикле, в качестве условного выражения выступает функция EOF .
Режим записи
Rewrite(<имя файловой переменной>)
Открыв файл в режиме записи, можно поэлементно записать в него информацию, воспользовавшись процедурой Write(<файловая переменная>, <элемент>) .
Закрытие файла
Процедура Close закрывает открытый файл, а также освобождает файловую переменную, указанную в качестве параметра.
Удаление файла
Erase(<имя файловой переменной>)
При помощи процедуры Erase , можно удалить с внешнего носителя, заранее закрытый файл.
Изменение имени файла
Rеnаmе(<имя файловой переменной>, ‘<новое имя файла>’)
Rеnаmе переименовывает физический файл, который перед этим следует закрыть процедурой Close .
Смещение указателя файла
Sееk(<имя файловой переменной>, <номер элемента>)
Процедура Sееk устанавливает позицию указателя в файле на необходимый элемент (нумерация элементов начинается с нуля).
Определение положения указателя
FilePos(<имя файловой переменной>)
Функция FilePos принимает значение порядкового номера элемента, над которым в момент вызова находиться указатель.
Определение количества элементов
FileSize(<имя файловой переменной>)
Функция FileSize определяет количество всех имеющихся в файле элементов.
2 Текстовые файлы
Текстовые файлы могут состоять из элементов символьного ( char ) и строкового ( string ) типа данных. Ключевое слово Text указывает, что файловая переменная создается для работы именно с текстовым файлом:
Var <идентификатор>: Text;
Структура текстового файла представляет собой последовательность строк, которые в свою очередь состоят из символов. Любая строка оканчивается признаком «конца строки», а сам файл признаком «конца файла». Для определения конца файла в Паскаль есть функция EOF , а для конца строки – EOLn :
EOLn(<имя файловой переменной>)
В случае достижения конца строки она (функция EOLn ) возвращает значение True , в противном случае False .
Рассмотрим работу с текстовым файлом, на примере программы.
Место создания файла "file.txt" не было указано, поэтому он создаться в папке по умолчанию для вашей среды программирования. Для текстовых файлов в Паскале определены следующие процедуры и функции:
Append(<имя файловой переменной>)
Процедура Append открывает существующий файл в режиме дозаписи. После чего в его конец можно добавить какую либо информацию.
SeekEOLn(<имя файловой переменной>)
Если до конца строки остались пробелы/знаки табуляции, то функция SeekEOLn возвращает значение True , иначе False .
SeekEOF(<имя файловой переменной>)
Если до конца файла остались лишь строки с пробелами/знаками табуляции, то функция SeekEOF возвращает значение True , иначе False .
3 Типизированные файлы
Файл, определенный стандартным или пользовательским типом данных, называется типизированным. Общая форма объявления типизированных файлов имеет вид:
Var <имя файла>: File of <тип компонент>;
Здесь тип компонент может быть любым типом данных, определенных в Pascal, но только не файловым. Для работы с типизированными файлами используются уже знакомые нам процедуры и функции: Write, Read, Seek, Filesize, Filepos , а также процедура Truncate :
Truncate(<имя файловой переменной>)
Она удаляет все компоненты в файле, начиная с того над которым находиться указатель.
Одной из главных особенностей типизированного файла является возможность прямого обращения к его отдельным компонентам. Это достигается за счет, того что заранее известен тип компонент файла. Рассмотрим два примера кода, в первом из которых обращение к элементам файла происходит последовательно, а во втором прямо.
Пример: вычислить среднее арифметическое элементов файла.
Пример 2: поменять строки в файле местами.
Таким образом, напрашивается вывод, что типизированные файлы несколько функциональней в обработке, чем текстовые. Далее разберем последний пункт данной статьи, а именно третий вид файлов — бестиповые файлы.
4 Бестиповые (нетипизированные) файлы
Бестиповые файлы предназначены для записи участков памяти компьютера на внешний носитель и считывания их в память. В отличие от типизированных файлов, нам не нужно знать информация какого типа хранится в них. А все потому, что данные из файлов, не имеющих типа, считываются в виде байт, после чего они «подстраиваются» под переменную, в которую происходит считывание.
Общая форма записи нетипизированных файлов
Var <идентификатор>: File;
отличается от типизированных отсутствием части of <тип данных> . Кроме того, немного изменяется принцип действия процедур Reset и Rewrite . К ним прибавляется второй параметр типа Word:
Здесь «значение» — это новый размер буфера, который по умолчанию равен 128 байтам. В качестве минимального значения можно указать 1 байт, а максимального — 64 кбайт (число в байтах).
Также в бестиповых файлах для записи и чтения информации используются не стандартные процедуры Read и Write , а две новые: BlokRead и BlockWrite . Рассмотрим каждую из них.
Процедура BlockRead
Данная процедура считывает из файла заданное число записей, которые помещаются в память.
Общая форма записи:
BlockRead(<имя файловой переменной>, <x>, <количество байт>, <y>);
x, y – обычные переменные, в первую помещается прочитанные данные, во вторую – количество считанных байт. В случае удачи y (y – необязательный параметр) будет иметь тоже значение, что и третий параметр.
Процедура BlockWrite
Для записи информации в бестиповый файл предназначена процедура BlockWrite :
BlockWrite(<имя файловой переменной>, <x>, <количество байт>, <y>);
Параметры процедуры BlockWrite точно такие же, как и у BlockRead . Да и принцип их одинаков, за исключением того, что первая записывает данные в файл, а вторая считывает их из него.
В следующей программе данные сначала записываются в нетипизированный файл, а затем выводятся из него посредством рассмотренных нами операций.
Возможно, что ваша среда программирования не поддерживает работу с файлами, не имеющими типа. Поэтому прежде чем начать искать ошибку в коде, стоит узнать про данную функцию.
Вечер добрый!
Хочу обратиться к вам с такой проблемой:
1)Не могу разобраться с удалением какой-либо записи из файла.
2)Сортировка записей в файле данных по определенному ключу.
Я только начинаю изучать паскаль и некоторые моменты мне пока не понятны!
Понимание, конечно,приходит,но с опозданием.А иногда эта задержка черевата последствиями(для студентов конечно. ).
Если есть возможность помогите .
P.S.:Прилагаю файл-исходник Books_of_. (.Pas фаил переименнованный в .txt для того что-бы вы могли посмотреть исходник)
и файл Книги.txt (Содержиться информация о книгах в библиотеке)созданный через эту же программу.
Последний раз редактировалось Stilet; 09.06.2009 в 10:49 .если по условиям задачи Ваш типизированный файл помещается в память (например, в массив записей), то задача сводится к элементарной:
считываем полностью файл в array[1..МаксимальноВозможноеКоличествоЗа писей] of TMyRecord;
сортируем этот массив.
записываем отсортированный массив в файл, либо в новый, либо в старый (в этом случае лучше исходный файл при этом переименовывать в имя.BAK)
всё.
если же файл по каким-либо причинам нельзя считывать в память - то тогда это намного сложнее. погуглите по словам "внешняя сортировка"
Чего-то я немножко недопонял из выше сказанного!!
А файл(Мною созданный)Содержит информацию о книгах и включает в себя:
1) Удк;
2)Фамилию и инициалы автора;
3)Название книги;
4)Год издания;
5)Количество экземпляров в библиотеке
Эти пять позиций для каждой книги.
и надо отсортировать их по году издания!
вот начальный текст программы,где указываються типы переменных в записи!!
просто везде пишут по разному:где-то надо метки какието ставить,гдето динамические файлы реализовывать.
за ранее благодарен.
Последний раз редактировалось Stilet; 09.06.2009 в 10:49 .ладно. спрошу по простому - СКОЛЬКО МАКСИМАЛЬНО КНИЖЕК МОЖЕТ БЫТЬ В ВАШЕМ ФАЙЛЕ (BookFile:file of Books; ) ??
Т.е. можно ли считать, что у Вас не может быть больше, чем, скажем 900 книг (к сожалению, для DOS TurboPascal есть ограничение на сегмент данных, и для Вашей структуры записи более 950 записей в памяти не поместятся).
Если ограничение устраивает. тогда всё просто:
Дело в том, что Файл уже создан и содержит пока 4-ре записи,но будет дополняться педагогом(Для проверки работоспособности программы);
получается надо
1) (BookArr : array[1..900] of Books ввести в описание основной программы как переменну или же обозначить ее уже в самой процедуре?
если в процедуре тогда туда-же надо вводить переменную BookCount(Это как я понимаю счетчик записей)
вообщем вот это текст программы,две последние процедуры(Если их можно так назвать) -это я пробовал чтонибудь сделать ссортировкой.
uses
crt;
type
Books=record
Udk:integer;
Fio:string[30];
Nazv:string[30];
God_Izd:word;
Kol_Ekz:word;
end;
var
BookFile:file of Books;
Work:Books;
Vid:byte;
End_Menu:boolean;
Name:string[15];
BookArr:array[1..10] of Books;//эту запись я ввел после прочтения вашего ответа,Но не уверен в правильности своего ввода!!
procedure Name_File;
begin
writeln('Введите имя файла');
readln(Name);
end;
procedure AddRec;
begin
Writeln ('Ввод записи №',FilePos(BookFile)+1);
with Work do
begin
write ('Введите Удк');
readln (Udk);
Write ('Введите Фамилию и инициалы ');
readln (Fio);
write ('Введите название ');
readln (Nazv);
write ('‚Введите год издания ');
readln (God_Izd);
write ('‚Кколичество Экз_ов');
readln (Kol_Ekz);
write (BookFile,Work);
end;
end;
procedure Create_book_Of_Lib;
var
ind,count : integer;
begin
name_file;
assign (bookfile, name);
rewrite (bookfile);
writeln ('создание файла записи ',Name);
write ('введите кол-во записей ');
readln (count);
for ind:= 1 to count do
addrec;
writeln('создание файла завершенно');
writeln('Файл содержит ',filesize(bookfile),' записей');
close(bookfile);
end;
procedure OutputRec;
begin
read(bookfile, work);
with work do
begin
writeln('Запись № :', FilePos(bookfile));
writeln('Удк :',Udk);
writeln('Фио :',Fio);
writeln('Название :',Nazv);
writeln('Год :',God_Izd);
writeln('Кол-во Экз :',Kol_Ekz);
end;
end;
procedure OutputAllrec;
begin
Name_File;
Assign(BookFile,Name);
Reset(BookFile);
if IOresult=0 then
begin
Seek(Bookfile,0);
writeln('*** Вывод данных',Name,' ***');
while (not Eof(BookFile)) do
OutputRec;
end
else
writeln('Файла с именем',Name,' не существует');
end;
Procedure UpdateRec;
var
NumRec:longint;
begin
Name_File;
Assign(BookFile,Name);
Reset(BookFile);
if IOresult=0 then
begin
Write('Введите номер изменяемой записи');
Readln (NumRec);
Seek(BookFile,NumRec-1);
writeln('--старое значение записи--');
OutputRec;
Seek(BookFile,NumRec-1);
writeln('задаем новое значение ',NumRec,' записи');
AddRec;
Close(BookFile);
end
else
writeln('Файла с именем '+Name+' не существует');
end;
procedure addrectoend;
begin
name_file;
assign(bookfile, name);
reset(bookfile);
if ioresult = 0 then
begin
seek(bookfile,filesize(bookfile));
addrec;
Writeln('Измененый файл имеет',filesize(bookfile), ' записи');
close(bookfile);
end
else
writeln('Файла с именем'+Name+' на диске нет');
end;
procedure Del_Rec;
var NumRec:integer;
begin
Assign(BookFile,'книги.txt');
reset(BookFile);
If IOresult=1 then
begin
writeln('Ошибка');
end
else
writeln('Введите номер удаляемой записи');
Read(NumRec);
begin
if NumRec>FileSize(BookFile) then
begin
writeln('Такой записи не существует');
end
else
begin
Seek(BookFile,FileSize(BookFile)-1);
read(BookFile,work);
Seek(BookFile,NumRec-1);
write(BookFile,Work);
Seek(BookFile,FileSize(BookFile)-1);
truncate(BookFile);
Writeln('Запись стерта ');
writeln('Файл данных имеет ',FileSize(BookFile),' записей');
close(BookFile);
end;
end;
begin
Name_File;
Assign(BookFile,Name);
reset(BookFile);
writeln('—вҐ*ЁҐ д ©« § ЇЁбҐ©');
while Not (Eof(BookFile)) do
begin
read(BookFile,Work);
inc(Count);
writeln('‚ д ©«Ґ ᮤҐа¦Ёвмбп ',Count,' § ЇЁбҐ©');
writeln('” ©« ¤® б®авЁа®ўЄЁ');
Seek(BookFile,0);
for i := 1 to Count do
begin
read(BookFile,Work);
writeln(Work.God_Izd);
end; >
< Procedure Sort_God; // это тоже не понятно что получилось
var
Stop:boolean;
k:integer;
begin
assign(BookFile,Name);
reset(BookFile);
while Not Eof(BookFile) do
begin
repeat
Stop := true;
for k := 1 to 3 do
if BookArr[k].God_Izd > BookArr[k+1].God_Izd then
begin
work := BookArr[k];
BookArr[k] := BookArr[k+1];
BookArr[k+1] := work;
Stop := false
end
until Stop;
Create_book_Of_Lib;
end;
end; >
begin
ClrScr;
End_Menu:=false;
repeat
writeln('*** ’Ґ«Ґд®**л© бЇа ў®з*ЁЄ ***');
writeln('1 - ᮧ¤ *ЁҐ *®ў®Ј® д ©« ');
writeln('2 - Їа®б¬®ва д ©« ');
writeln('3 - Ё§¬Ґ*ҐЁҐ ¤ **ле');
writeln('4 - ¤®Ї®«*Ґ*ЁҐ д ©« ');
writeln('5 - Ї®ЁбЄ Ї® д ¬Ё«ЁЁ');
writeln('7 - “¤ «Ґ*ЁҐ § ЇЁбЁ');
writeln('6 - ‘®авЁа®ўЄ Ї® Ј®¤г Ё§¤ *Ёп');
writeln('0 - ‡ ўҐаиҐ*ЁҐ а Ў®вл.');
writeln('‚ и ўлЎ®а');
readln(Vid);
case Vid of
1:Create_Book_Of_Lib;
2:OutputAllRec;
3:UpdateRec;
4:AddRecToEnd;
5:FindFio;
6:Sort_God;
7:Del_Rec;
0:End_Menu:=True;
end;
writeln('„«п Їа®¤®«¦Ґ*Ёп * ¦¬ЁвҐ Enter');
readln;
ClrsCR
UNTIL End_Menu;
end.
вот такой исходник!!
не могу пока въехать!)
буду конечно сейчас искать да пробовать сам,почитаю мануалы!
За Инфу спасибо. за помощь то же!
Скорее всего где-то что то не дописал ,не доглядел ну и не додумал конечно!!
Работа с файлами применяется для хранения в них дополнительной и изменяющейся информации. В файлах размещаются данные, предназначенные для длительного хранения. Каждому файлу присваивается используемое при обращении к нему уникальное имя. Файлы широко используются при решении различных задач.
При работе с файлами на Паскале следует учитывать такую особенность: работа с файлом по его имени невозможна, а для доступа к файлу необходимо сначала связать его с некоторой файловой переменной особого типа, и в будущем использовать эту переменную вместо имени файла.
Для работы с внешними файлами в блоке описания необходимо определить файловую переменную, которая будет представлять файл внутри программы var f:text;
в качестве типа файловой переменной указывается стандартное имя text.
В данном случае файловая перемененная типа text имеет имя f.
Для работы с файлами можно использовать следующие операции:
- assign для установления связи между файловой переменной и внешним именем файла.
Например: assign (имя_файловой_переменной, имя_файла);
- erase для удаления файла с диска.
Например: erase (имя_файловой_переменной);
- reset открытие существующего файла для ввода информации.
Например: reset (имя_файловой_переменной);
- rewrite создание и открытие нового файла для записи в него информации.
Например : rewrite (имя_файловой_переменной).
- close закрытие файла по окончании работы с ним.
Например: close (имя_файловой_переменной).
Для работы с файлами используются стандартные функции:
- eof нахождение конца файла,
- eoln нахождение конца строки данных.
Считывание информации из файла и занесение информации в файл организуется стандартными операторами:
write (имя_файловой_переменной, имя_записываемой_переменной) записывает символ в файл, связанный с файловой переменной,
readln (имя_файловой_переменной, имя_читаемой_переменной) чтение из текстового файла строки.
Содержимое файла можно выводить на экран, на принтер, в файл.
Примеры программ работы с файлами:
1. Для выполнения этой задачи сначала необходимо создать
файл для последующего удаления. Это можно сделать набрав и сохранив в своей папке файл с любым текстом из Паскаль АВС. Файл должен располагаться его в том же каталоге, где и ваши программы.
Удаление с жесткого диска (винчестера) файлов с помощью программы, созданной на языке Паскаль.
write('Введите имя удаляемого файла с расширением ');
Наберите, сохраните программу в своей папке. Убедитесь, что файл действительно удален.
2. Программа создает новый текстовый файл и записывает в него информацию.
При создании файла в программе дайте ему расширение pas, тогда Вы сможете обратиться к файлу, не выходя из Паскаль АВС.
uses crt; var f:text;
write('Введите имя создаваемого файла (латинскими буквами)');
writeln('Введите текст, который нужно записать в файл: ');
writeln(' По окончании нажми Esc');
После набора и проверки программы убедитесь, что ваш файл действительно создан и информация записана.
3. Программа читает из текстового файла и выводит содержимое на экран.
write('Введите имя файла (латинскими буквами) из которого нужно прочесть данные ');
for q:=1 to length(a) do
writeln(' чтение информации завершено.');
Задачи для самостоятельного решения
1. Составить программу, чтобы она создавала файл, записывала в него любой текст, а затем считывала и выводила на экран.
2. В любую имеющуюся программу добавить блок запроса пароля и сравнивать его с хранящимся в файле, если пароль не совпадает, то программу не запускать.
3. Задачу 2 изменить так, чтобы пароль шифровался по любой схеме, а при проверке программа его самостоятельно расшифровывала.
Так уж случилось что сайт простаивает, а в свое время я занимался им активно, идея просто отличная и забросить ее не в коем случае нельзя, поэтому мной было принято решение о продаже этого сайта.
Что получает в итоге покупатель:
- Весь контент сайта(все содержимое хостинга)
- Полные права на доменное имя сайта(сделаем трансфер)
- Копирайт сайта на большом количестве сторонних ресурсов так как сайту уже более 4-х лет
- Готовый движок форума и все исходные тексты системы управления сайтом
- Все исходные тексты ПО которое опубликовано на сайте
- Все почтовые ящики доменного имени
- Все домены третьего уровня
Дополнительную информацию о статистике посещения, клиентах, вы можете узнать написав на почту [email protected]
Добавил admin | Категория Pascal за 12 уроков, перевод | 06 Февраля 2014
В этом уроке мы с вами рассмотрим:
- Чтение из файла
- Создание и запись в файл
- Добавление данных в существующий файл
- Удаление файлов
- Использование директив ,
- Создание и удаление вложенных каталогов
- Описание функции FileSize()
Введение
Файл содержит данные которые в свою очередь хранятся на жестком диске подключенному к компьютеру. Операционная система предоставляет инструменты для работы с файлами(файловой системой). Текстовые файлы как правило могут содержать текст и графическую информацию, комбинированную. Для работы с текстовыми файлами используются текстовые процессоры которые имеются в операционной системе. Текстовые файлы сохраняются на жестком диске компьютера с расшитением *.TXT или *.DOC, *.DOCX. файлы с расширением *.TXT создаются с помощью стандартного текстового процессора Notepad. Но будем помнить что некоторые программы позволяют нам сохранять так сказать отформатированный текст, или текст с картинками, для таких целей NOTEPAD естественно не подходит. Для такого текста используются специальные пакеты программ, такие например как Microsoft Word, Open Office и другие. Такие программы используют несколько иной подход для создания файла нежели NOTEPAD. Таким образом файл созданный в Microsoft Word невозможно правильно открыть в NOTEPAD, а вот файл *.TXT легко открывается в текстовом редакторе Word. Программы которые могут читать файлы расширения *.Ххх называют программами просмоторщиками файлов.
Чтение из файла
Прочитать информацию из файла на языке Паскаль не составит большого труда. Обратите внимание что в Паскале нет никаких зарезервированных слов которые используются для чтения или записи информации в файл. Для этих целей используются уже знакомые нам readln() and writeln(). И так пример, как читать информацию из файла
И так что мы с вами написали. У нас появилась новая переменная типа Text. Такая переменная применяется когда вы хотите получить доступ из своей программы к определенному текстовому файлу. Переменная FileName используется для ввода пользователем имени файла(readln(FileName);). Связь переменной UserFile с файлом, путь к которому указан в переменной FileName осуществляется с помощью функции Assign полный текст будет такой Assign(UserFile, FileName + '.txt'); после этого происходит чтение из файла в цикле Repeat который завершается только после того как достигнут конец файла Eof(UserFile). Чтение из файла производиться функцией Readln(UserFile,TFile); где указывается файл из которого нужно считать строку и переменная в которую мы считаем эту строку. Процеду Writeln(TFile); выводит эту строку к нам на экран.
Создание файла, добавление данных
Давайте сразу посмотрим пример создания и добавления информации в файл.
В приведенном выше примере мы создаем файл с названием 'Textfile' на диске C:\. Создаться файл функцией Rewrite(UserFile); после чего в файл записываются строки Writeln(UserFile,'PASCAL PROGRAMMING');… Writeln(введите свою строку в ваш файл:'); тут первым параметром является файл в который записывается информация и вторым информация которую нужно добавить в файл. После чего мы считываем пользовательскую строку Readln(Txt);, добавляем пустую строку в наш файл Writeln(UserFile,'');потом говорим что сейчас будет пользовательская статья Writeln(UserFile,'The user entered this text:');, записываем пользовательскую статью Writeln(UserFile,Txt); И закрываем файл Close(UserFile);. Помните, файл всегда нужно закрывать, после окончания работы и открывать перед началом работы.
Добавление данных в существующий файл
Для того что бы добавить данные в существующий файл, его нужно открыть на чтение, добавить нужную информацию и закрыть, но не перезаписывать. Некоторые начинающие программисты на самом деле плохо понимают как не перезаписать файл с данными которые они хотели ввести, это общая проблема:
Выполните программу несколько раз, откройте файл 'C:\ADDTEXT.TXT' и посмотрите что в нем. Вы видите только одно предложение? ReWrite(UFile); функция которая открывает файл на перезапись.
Понимаете да что нам не подходит открытие файла с помощью ReWrite(UFile);, нужна какая то новая функция, и она есть это append(f) где F это переменная типа текст, ну мы с вами проходили уже это в этом же уроке. Теперь наша программа будет выглядеть так:
Выполните программу несколько раз для того что бы увидеть изменения.
Удаление файлов
В Паскале для того что бы удалить файл используется зарезервированное слово Erase(f) где F может быть путем к файлу('C:\ADDTEXT.TXT') или самим файлом, переменной типа текст. Важным замечанием будет то что файл удаляется совсем, то есть в корзине своего компьютера вы его не найдете.
В отличии от других функций для работы с файлами функция Erase(f) не открывает файл для его удаления, так что вам не нужно закрывать файл после его удаления.
Пример программы:
Если наш файл не найден функция IOResult вернет значение 0 а если файл не найдет значит функция вернет отличное от нуля значение.
ВАЖНО: если файл успешно найден, файл откроется и вы должны поработав с ним закрыть его, как показано в примерах выше. А вот если он не найден то здравый смысл подсказывает что он не может быть открыт, соответственно и закрывать и работать нам не с чем. Внимательно посмотрите пример еще раз, если у вас есть какие то вопросы, пожалуйста задавайте их в комментариях. Запустите программу несколько раз, с существующими и не существующими файлами, посмотрите на результат работы.
Директивы компилятора рекомендуется использовать со всеми функциями для открытия файлов 'rewrite()', 'append()', 'erase()', а так же 'FSearch()'. Обязательно попрактикуйте этот урок, повторюсь, в случае вопросов обязательно оставляйте их в коментариях. Создание и удаление вложенных каталогов
В языке Pascal есть функции для работы с каталогами. С помощью их можно создавать или удалять каталоги с жестких дисков компьютера. Что бы создать директорию в Паскале используется функция 'createdir(c)' где С имеет тип PChar. PChar является переменной указателем, которая содержит адрес динамической переменной заданного типа. Каталог создается следующим образом:
NewDir := FSearch('C:\Pascal Programming',GetEnv('')); if NewDir = '' then CreateDir('C:\Pascal Programming');
давайте теперь пример, сразу в примере разберем функцию FSearch:
Читайте также: