Программирование на языке Object Pascal

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

begin(неверное имя файла);;;

{I+}not Eof(f) do begin(f,s);.Lines.Add(s);;

End;

 

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

Вызов диалогового окна осуществляется с помощью метода ExeCute: Boolean; (который возвращает true если окно открывалось успешно и false в противном случает).

3)._Пример Открытие файла:

 

…OpenDialog1.Execute then begin(f,OpenDialog.FileName);

…(f);;

 

)._Пример Процедура подсчитывает количество строк и символов в текстовом файле:

 

Procedure TForm1.Button1.Click(…);: TextFile;: string;, k: int64;(f,'alpha.txt');(f);:=0;:=0;not Eof(f) do begin(f, s);(i);:= k + length(s);;.Lines.Add (alpha.txt содержит + IntToStr(k) + символов + и+IntToStr(i) + строк);;

 

Использование объекта TStringList (набор строк и является потомком объекта TStrings, каждая строка имеет свой индекс, к ней можно обратиться с помощью свойства *.strings[i] - i - необходимая строка).

Пример:

: TStringList;

...TForm1.Button1.Click(...);:=TStringList.Create(...);.LoadFromFile (c:\alpha.txt);.Lines.Add(t.StringList[0]);.Lines.Add(t.StringList[1]);

...

// по окончании работы объект t надо уничтожить

t.Free;;

 

Методы объекта StringList:

*.Count - возвращает количество строк в этом объекте;

*.SaveToFile - позволяет скинуть объект в файл.

Типизированные файлы.

Длинна, любого компонента типизированного файла, постоянна, что дает возможность организовать прямой доступ к каждому из них. Каждая запись файла может быть доступна путем указания ее порядкового номера. После открытия файла, указатель стоит в его начале и указывает на первый компонент с номером (0). После каждого чтения или записи указатель смещается на одну позицию, т.е. на одну запись. Перемещение в списках ввода / вывода процедур read / write должны иметь тот же тип, что и компоненты файла (работает правило приведения типов). Если переменных в списках ввода / вывода несколько, то указатель будет смещаться после каждой операции обмена данными между переменными и фалом.

 

Работа с типизированными файлами

 

)._Пример Объявление типизированного файла:

 

Var: file of integer;: file of string [20];: integer;: byte;: int64;: string [20];

...TForn1.Button1.Click (...);(f,c:\int.dat);(f,c:\string.txt);(f);(t);(f,a,b);(t,x,abcdef);(f);(t);(f,c);(t,x);(t,stuvw);;

 

Процедура Reset применима к типизированным файлам, открывает как для записи, так и для чтения одновременно. ReWrite работает аналогично текстовым.

Процедуры для работы с файловыми переменными:

Seek(); - процедура смещает указатель файла к требуемой записи.

- дескриптор файла.

- выражение типа int64 содержащее номер записи.

FileSize():int64; - функция возвращает количество записей в файле.

SizeOf(); - позволяет определить размер объекта:

 

Var: word;[2]

...(z);

...

 

FilePos():int64; - функция возвращает порядковый номер записи, которая будет обработана следующей операцией ввода / вывода:

)._Пример Создание базы данных содержащих информацию о погоде (база данных состоит из одной таблицы):

 

МесяцДень0ССкорость ветраНаправление ветраbytebyterealrealString[3]

Type=recode;:bute;:bute;:real;:real;:string[3];;:file of pogoda;,b:pogoda;:int64;TForm1.Button1.Click(...);

{заполнение файла}(f,c:\pogoda.dat);(f);

 

Procedure TForm1.Button2.Click(...);

{просмотр файла}(f);not Eof(f) do begin(f,b);=i+1;StringGrid1 do begin[1,i]:=IntToStr(b.m);[2,i]:=IntToStr(b.d);[3,i]:=FloatToStr(b.t);[4,i]:= FloatToStr(b.sv);[5,i]:=b.nv;;;;

Не типизированные файлы (бинарные).

Объявляются как переменные типа файл:

 

Var

f:file;

 

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

Эти файлы совместимы с любыми другими;

Высокая скорость обмена данными между диском и памятью.

Инициализация не типизированного файла осуществляется процедурами Reset и ReWrite:

Reset(]);

Длинна записи не типизированного файла измеряется в байтах и по умолчанию равна 128 байт.

Тип данных Word() - 0..65535 максимальная длинна записи 64 Кбайт. Delphi не накладывает ограничений на длину записи не типизированного файла, за исключением ограничения на целый тип Word.

 

Жесткий диск состоит из нескольких дисков, которые в свою очередь состоят из секторов, состоящих из доменов. Размер физического сектора на жестком диске 512 байт. Для обеспечения максимальной скорости обмена данными длину записи не типизированного файла следует задавать кратной размеру физического сектора на диске (512 байт). Кроме того на логическом уровне каждому файлу выделяется как минимум 1 кластер. Каждый кластер занимает 2 или более смежных секторов. Как правило, на большинстве дисков 1 кластер читается или записывается за один оборот диска, по-этому, максимальную скорость обмена данными можно получить, если указать длину записи не типизированного файла равной размеру кластера в байтах.

 

Процедуры и функции для работы с не типизированными файлами

 

Для этих файлов могут применяться все процедуры и функции, предназначенные для типизированных, за исключением Read и Write, которые заменяются высокоскоростными процедурами BlokRead и BlokWrite:

 

BlokRead(]);

BlokWrite(]);

 

- файловая переменная;

- буфер (т.е. имя переменной, которая будет участвовать в обмене данными с диском);

- количество записей, которые должны