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

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

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

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

3. файлы требуются для сохранения выходных данных (при многократном сохранении или при сохранении больших объемов).

Главное преимущество – высокая скорость обработки( еще выше, чем для типизированных).

Открыть как не типизированный можно файл любой природы( текстовый, бинарный типизированный). Чаще всего применяются не типизированные фалы, когда нужно скопировать большой кусок информации из одного файла в дробной без изменений.

 

Описание нетипизированных файлов

Var g:file;

Никакая файловая переменная не может быть const.

Назначение н.т. файлов(смотри текст, бинарные)

Открытие , закрытие н.т.ф

Reset(f[,size]);закрытие файла для считывания из него инф-ии и одновременно для записи в него инф-ии, если файла не сущ, от это вызовет ошибку. указатель в начало файла

Rewrite (f[,size])

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

Close(f);

Закрытие файла

Поиск в нетип файле

Смотри поиск в тип файле…. Но так как тип элементов не типизированном файле не определен, то размер одного эл-та-128 байт или size, указанный при открытии

 

Запись и чтение

Blockread(f:file; buf, count:word [;result:word])для считывания из файла f в нескольких элементов разом. Их количество указывается в переменной count. Для на каждого элемента указывается при открытии файла. Считывание производится при помощи буфера обмена данными buf. Необяз-я переменная result содержит фактическое количество считанных элементов.

Blockwrite(f:file; buf, count:word [;result:word])

Записать блок элементов конкретный файл- запись в файл параметры см выше

Подпрограммы обработки директорий

Blockread(f:file; buf, count:word [;result:word])

Erase(f:file); удаляет файл

Rename(f:file;s:string); переименовывает файл (s новое имя)

Getdir(disk:byte; s:string);записать в строку s имя текущей директории на указанном диске. Если диск =0( текущий диск.) 1-диск а. 2-диск б и.тд

Mkdir(s:string); создать директорию( s имя)

Rmdir(s:string); удалить директорию

function FileExists(name: string): boolean;
Возвращает True, если файл с именем name существует

 

 

Рекурсии.

 

 

Программирование графики.

 

Графика в Pascal

Пример:

uses GraphABC,crt;

begin

setpixel(50,50,clgreen);

line(2,6,20,30);

Circle(80,80,70)

end.

Изображение строится из пикселей, координаты считаются по пикселям. Необходимо подключение модуля GraphABC.

Возможности модуля GraphABC

1. Графические примитивы

2. Цветовые константы и функции для работы с цветом

3. Действия с пером

4. Действия с кистью

5. Действия со шрифтом

6. Действия с рисунками

7. Действия с графическим окном

8. Задание режимов вывода

Графические примитивы

procedure SetPixel(x,y,color:integer);

- закрашивает один пиксель скоординатами x y цветом color

function GetPixel(x,y):integer;

-возвращает текущее значение цвета для пикселя x y

procedure MoveTo(x,y:integer);

- перемещает невидимое перо к точке x y

procedure LineTo(x,y:integer);

-рисует отрезок от текущего положения пера до точки x y

procedure Line(x1,y1,x2,y2:integer);

-рисует отрезок с началом в x1 y1 и концом в x2 y2

procedure Circle(x,y,r:integer);

-рисует окр. С центром в x y и радиусом в r

procedure Ellipse(x1,y1,x2,y2:integer);

-рисует эллипс вписанный в прямоугольник

procedure Rectangle(x1,y1,x2,y2:integer);

-прямоугольник где указаны координаты противоположных вершин

procedure RoundRect(x1,y1,x2,y2,w,h:integer);

-прямоугольник со скруглёнными краями где w и h – высота и ширина эллипса для скругления краёв

 

procedure Arc(x,y,r,a1,a2:integer);

-рисует дугу окружности с центром в x y и радиусом r, заключённую между углом между двумя лучами a1 a2

procedure Pie(x,y,r,a1,a2:integer);

-тоже самое только лучи видимые

procedure Chord(x,y,r,a1,a2:ingerer);

-рисует фигуру ограниченную дугой окружности и отрезком соединяющим её концы

procedure TextOut(x,y:integer; s:string);

-выводит строку s в позицию x y

procedure FloodFill(x,y,color:ineger);

-заполняет область определённым цветом начиная с x y

procedure FillRect(x1,x2,y1,y2:integer);

-заливает прямоугольник текущим цветом кисти

procedure Polygon(var a; n:integer);

-строит ломаную по n точкам координаты которых заданы в массиве a элементов типа point(см. дома)

procedure Polylince(var a; n:integer);

- строит замкнутую ломаную по n точкам координаты которых заданы в массиве a элементов типа point(см. дома)

 

function RGB(r,g,b:integer):ColorType;

-возвращает 3 значения цвета по RGB

function GetRed(color:ColorType):integer;

-взовр. красный

function GetGreen(color:ColorType):integer;

function GetBlue(color:ColorType):integer;

Действия с пером.

 

Function PenX:integer;

- возвращает текущее значение пера

Function PenY:integer;

- возвращает текущее значение пера

Procedure SetPenColor(color:integer);

- устанавливает цвет пера.

Function PenColor:integer;

- возвращает текущий цвет пера.

Procedure SetPenWidth(w:integer);

- устанавливает ширину пера.

Function PenWidth:integer;

- возвращает ширину пера.

Procedure SetPenStyle(ps:integer);

- устанавливает стиль пера, заданным параметром ps.

Function PenStyle:integer;

- возвращает текущий стиль пера.

 

 

Действия с кистью.

 

Procedure SetBrushColor(color:integer);

- устанавливает цвет кисти.

Procedure BrushColor:integer;

- возвращает цвет кисти.

Procedure SetBrushPicture(fname:string);

- устанавливает в качестве образца для кисти, образец, хранящийся в файле fname.

Procedure ClearBrushPicture;

- очищает рисунок-образец, выбранный для кисти.

Procedure SetBrushStyle(bs:integer);

- устанавливает стиль кисти, заданный параметром bs.

Function BrushStyle:integer;

- возвращает текущий стиль кисти.

 

Действия со шрифтом

 

Procedure SetFontColor(color:integer);

- устанавливает цвет шрифта

Function FontColor:integer;

- возвращает цвет шрифта

Procedure SetFontSize(sz:integer);

- устанавливает размер шрифта

Function FontSize:integer;

- возвращает размер шрифта

Procedure SetFontName(name:string);

- устанавливает название шрифта

Function FontName:string;

- возвращает название шрифта

Procedure SetFontStyle(fs:integer);

- устанавливает стиль шрифта

Function FontStyle:integer;

- возвращает стиль шрифта

Function TextWidth(s:string):integer;

- возвращает ширину строки s в пикселях

Function TextHeight(s:string):integer;

- возвращает высоту строки s в пикселях.

 

Действия с рисунками.

 

Работа с рисунками производится либо с помощью описателей(целое число), либо с помощью объектов класса Picture. Описатель возвращается функцией загрузки рисунка, а также функцией создания рисунка.

 

 

Function LoadPicture(fname:string): integer;

- загружает рисунок из файла, возвращает описатель.

Procedure SavePicture(n:integer;fname:string);

- сохраняет рисунок.

Procedure DrawPicture(n,x,y:integer);

- выводит рисунок в позицию x,y окна.

Procedure DrawPicture(n,x,y,w,h:integer);

- выводит рисунок в позицию x,y графического окна, масштабируя его размеры к ширине w и высоте h.

Procedure DrawPicture(n:integer;x,y:integer;r:Rect);

- выводит часть рисунка в позицию x,y, заключенную в прямоугольнике r.

Procedure DrawPicture(n:integer;x,y,w,h:integer;r:Rect);

- выводит часть рисунка в позициию x,y в прямоугольнике r, масштабируя его размеры по высоте и ширине.

Procedure CupyRect(n:integer;dest:Rect;n1:integer;src:Rect);

- копирует часть рисунка, заключенную в прямоугольнике src в прямоугольник dest рисунка n.

Procedure DestroyPicture(n:integer);

- удаляет рисунок из памяти, освобождая описатель.

Procedure SetPictureSize(n,w,h:integer);

- устанавливает размер рисунка в пикселях.

Function PictureWidth(n:integer):integer;

- возвращает ширину рисунка.

Function PictureHeight(n:integer):integer;

- высота рисунка.

Function PictureTransparent(n:integer):Boolean;

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

Function CreatePicture(w,h:integer):integer;

- создает рисунок высоты h и ширины w и возвращает описатель на него.

Function CreatePictureFromRect(r:Rect):integer;

- создает рисунок из прямоугольника r и возвращает описатель на него.

Function CreatePictureFromScreenBufferRect(r:rect):integer;

- создает рисунок из прямоугольника r вне экранного буфера графического окна и возвращает указатель на него.

Procedure SetPictureTransparent(n:integer;b:boolean);

- устанавливает или отключает режим прозрачности.

Function ImageIntersect(n1,n2:integer):Boolean;

- определяет, пересекаются ли изображения на рисунках с описателями n1 и n2, рисунки должны иметь одинаковый размер, белый цвет на рисунке считается прозрачным. Рисунки считатся пересекающимися, если хотя бы один непрозрачный пиксель присутствует с одним и тем же цветом на обоих рисунках.

Function StandardImageFolder:string;

- возвращает стандартный каталог для рисунков.

Procedure FlipPictureHorizontal(n);

- заркально отображает картинку по горизонтали.

Procedure FlipPictureVertical(n);

- зеркально отображает картинку по вертикали.