Файл: Лабораторная работа 1 Часть i 13 лабораторная работа n 1 Часть ii 16 лабораторная работа n 1 Часть iii 1.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.11.2023

Просмотров: 306

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Оглавление

Тема 1: Знакомство с основными компонентами группы Standard. Компоненты Delphi визуальные и невизуальные. Свойства и события компонентов. Назначения и основные свойства компонентов группы Standard.

ЛАБОРАТОРНАЯ РАБОТА № 1 / Часть I /

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть II /

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 1 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 2 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III /3 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 4 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 5 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 6 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 7 вариант

ЛАБОРАТОРНАЯ РАБОТА N 1 / Часть III / 8 вариант

Тема 2: Стандартные диалоговые панели – компоненты группы Dialogs.

ЛАБОРАТОРНАЯ РАБОТА №2

Тема 3. Работа с таблицами в Delphi

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть I /

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 1 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 2 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 3 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 4 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 5 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 6 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 7 вариант

ЛАБОРАТОРНАЯ РАБОТА № 3 / Часть II / 8 вариант

Тема 4. Графические средства Delphi

Тема 4.1 Графические компоненты

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 1

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 2

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 3

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 4

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 5

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 6

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 7

ЛАБОРАТОРНАЯ РАБОТА № 4 / Вариант 8

Тема 5. Работа с файлами в Delphi

ЛАБОРАТОРНАЯ РАБОТА № 5

(var F: File; var Buf; Count: word); - считывает из нетипизированного файла в переменную Buf число записей Count.

Для записи данных из файла применяют процедуры:

Write (var F; <список переменных>); - записывает в текстовый или типизированный файл указанный список;

Writeln (var F; <список переменных>); - записывает в текстовый файл указанный и символ перехода на новую строку.

BlockWrite (var F: File; var Buf; Count: word); - записывает в нетипизированный файл Count записей из переменной Buf.

Пример 1: Вычислить все целочисленные значения функций X2, X3 на интервале [1..100] и сохранить вычисленное в текстовом файле ‘F:\primer1.txt’.

procedure TForm1.Button1Click(Sender: TObject);

var

F:textfile;

x:integer;

begin

AssignFile(F,'F:\primer1.txt'); //связываем файловую переменную с реальным файлом

Rewrite(F);

Writeln(F, 'XX^2 X^3'); //записываем заголовок

For x:=1 to 100 do

Writeln(F,X,' ',X*X,' ',X*X*X);

CloseFile(F);

end;

Пример2: Пусть в текстовом файле Primer2.txt хранится список детей – в каждой строчке содержится возраст ребенка, имя и фамилия. Следует считать весь список детей в Memo3, список детей младше 5 лет – в Memo1, список детей 5 лет и старше – в Memo2.

procedure TForm1.Button1Click(Sender: TObject);

var

F:textfile; //файловаяпеременная

vozr:integer; //возраст

famname:string; //имяифамилия

begin

Memo1.Clear; Memo2.Clear; Memo3.Clear; //очищаетсодержимое Memo

Memo3.Lines.LoadFromFile('f:\primer2.txt'); //считываемсписокизфайла Memo3

AssignFile(F,'F:\primer2.txt'); Reset(F); //открываемтекстовыйфайлдлячтения

While not Eof(F) do //циклдоконцафайла

begin

Readln(F,vozr,famname); //считываемстрокуизфайла

if vozr < 5 then Memo1.Lines.append(Famname + '-'+IntToStr(vozr))

else memo2.Lines.append(Famname + '-'+IntToStr(vozr))

end;

end;

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

  1. Переименование файла

Function RenameFile (const Oldname, Newname: string): Boolean – функция возращает значение true, если переименование прошло успешно. Переименовать можно только закрытые (не открытые для чтения или записи) файлы.


  1. Определение факта существования файла

Function FileExists (const Fname: string): Boolean; - возвращает true, если файл существуетт.

Пример:

if FileExists ('f:\pr.txt') then

if not RenameFile ('f:\primer2.txt', 'f:\primer3.txt') then

ShowMessage(Дублирование имени файла или файл занят другой программой);

if not FileExists ('f:\pr.txt') then Memo1.Lines.SaveToFile('f:\pr.txt');

  1. Определениеразмерафайла

Function FileSize (var F): integer; - где F – логическое имя файла.

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

procedure TForm1.Button1Click(Sender: TObject);

var

size:integer;

F: file of byte;

begin

if OpenDialog1.Execute then

begin

AssignFile(F,OpenDialog1.FileName);

Reset(F);

Size:= FileSize(F);

Label1.WordWrap:= true;

Label1.Caption:= ’Размерфайла ' + OpenDialog1.FileName + ' размер' +IntToStr(size) + 'байт'

end;

end;

  1. Удаление файла

Fname_:_string_);'>Function_DeleteFile_(const_Fname:_string):_boolean;'>Function DeleteFile (const Fname: string): boolean; - возвращает true при успешном удалении файла.

  1. Определение и установка атрибутов файла

Function FileGetAttr (const Fname: string): integer; - функция может возвращать одну из следующих значений атрибута:

Числовое значение

Название константы

Атрибут

1

faReadOnly

ReadOnly

2

faHidden

Hidden

3




ReadOnly+Hidden

4

faSysFile

System

5




ReadOnly+System

6




Hidden+System

7




ReadOnly+Hidden+System

16

faDirectory

Подкаталог

32

faArchive

Archive

33







63

faAnyFile

Файлы со всеми атрибутами

Функция возвращает ноль при успешной установке атрибутов

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

Пример: FileSetAttr (‘f:\primer.sys’, saReadOnly)

Как отменить атрибуты? – установить новые, в результате все бывшие отменяются.

  1. Поиск файлов

FileFirst (const Path: strting; Attr: integer; var FF:TSearchRec): integer;

Функция FileFirst ищет в указанном каталоге первый файл, совпадающий с указанными атрибутами и маской. Если поиск успешен, то возвращается код 0, в остальных случаях - число больше нуля – код ошибки.

Описание параметров:

Path – маска полного имени файла – каталог и шаблон имени (указывает, где искать);

Attr – атрибуты искомых файлов (возможные значения указаны в таблице выше);

FF – информация о найденном файле, хранится в следующем виде:

Type TSearchRec = record

Time: integer; //времясозданияфайла

Size: integer; //размерыфайла

Attr: integer; //атрибутыфайла

Name: integer; //имя файла

…………….. // еще 3 системных параметра

End;

Функция FindNext продолжает поиск файлов, начатых функцией FindFirst.

Формат: Function FindFirst (var FF: TSearchRec): integer;

Пример: Найти в каталоге c:\Windows все файлы с расширением .Sys и отобразим их в редакторе Memo.

procedure TForm1.Button1Click(Sender: TObject);

var FS: tsearchrec;

begin

Memo1.Clear;

If FindFirst('c:\Windows\*.sys',faAnyFile,FS)=0 then

Memo1.Lines.Add('Первыйфайл'+FS.name+'занимает'+IntToStr(FS.size)+'байт')

else ShowMessage('');

While FindNext(Fs)=0 do

Memo1.Lines.Add('Файл'+FS.name+'занимает'+IntToStr(FS.size)+'байт');

end;

  1. Выделение частей имени файла

Function ExtractFileExt (const Fname: string); - выделяет расширение из указанного имени файла;

Function ExtractFileDir (const Fname: string); - выделяет из полного имени файла имя устройства и маршрут;

Function ExtractFileName (const Fname: string); - выделяет из полного имени файла чистое имя, отбрасывая путь и устройство.

  1. Копирование файлов

Function Copy File (const FromFile, ToFile: RChar; IfExist: boolean): Boolean;

Замечание: Тип PChar – длинная строка с символом #0 на конце. Для перевода строки типа String в строку типа PChar применяется специальная функция PChar, но перед пребразованием следует обязательно определить длину «String-овой» переменной, иначе будут большие проблемы на уровне ОС!

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

procedureTForm1.Button1Click(Sender: TObject);

var

dir: string; //имя каталога

Sr: Tsearchrec; //параметры найденного файла

Count: integer; //число файлов на диске

Resul: integer; //результат поиска файла

InFname, OutFname: string; //имена исходного и результирующего файла

begin

Dir:=InputBox('Данные копируются','в папку','C:\Rab1'); //определяется имя каталога

if not CreateDir (Dir) //создадимкаталог

then begin

ShowMessage ('Дублированиеименикаталога!'); Exit;

end;

//подсчет числа файлов на диске для установки диапазона ProgressBar1

Count:=1;

resul:=FindFirst('f:\'+'*.*',faAnyFile,Sr); //поискпервогофайла

While resul=0 do

Begin

Resul:=FindNext(Sr); //поискследующегофайла

Count:=count+1; //число файлов на диске

End;

FindClose(Sr); //завершениепоиска

ProgressBar1.max:=count; // макс. Значениедля ProgressBar1

ProgressBAr1.position:=1;

//копирование файлов с отображением процесса в ProgressBar1

resul:=FindFirst('f:\'+'*.*',faAnyFile,Sr);

InFname:='f:\'+sr.name; //имя файла, который копируется

OutFname:=Dir+'\'+sr.Name; //результирующее имя файла

//устанавливается размер переменных типа String для перевода в PChar

//выполнять обязательно – иначе будут большие проблемы с ОС!!!

SetLength(OutFname,100);

SetLength(InFname,100);

CopyFile(PChar(InFname),PChar(OutFname),true); //копирование выбранного файла

Whileresul=0 dobegin //копирование остальных файлов

resul:=FindNext(Sr);

InFname:='f:\'+sr.name; //имя файла, который копируется

OutFname:=Dir+'\'+sr.Name; //результирующее имя файла

SetLength(OutFname,100);

SetLength(InFname,100);

CopyFile(PChar(InFname),PChar(OutFname),true);

ProgressBar1.Position:=ProgressBar1.Position+1; //визуальноеотображениепроцессакопирования

end;

FindClose(Sr); //завершения поиска

ShowMessage('Копирование завершено!');

end;

end;

Функции для работы с каталогами и дисками

  1. Function CreateDir (const Dir: string): Boolean; - создается новый каталог Dir, если функция возвращает True.

  2. Function RemoveDir (const Dir: string): Boolean; - удаляет пустой каталог с диска.

  3. Function SetCurrentDir (const Dir: string): boolean; - устанавливает текущий каталог Dir.

  4. Function GerCurrentDir: string; - определяет текущее имя файла.

  5. Function DiskFree (Drive: byte); - определяет размер свободного пространства на указанном диске в байтах.


Drive =1, A:

Drive =2, B:

Drive =3, C:

Drive =4, D: и т.д.

  1. Function DiskSize (Drive: byte); - определяет общий размер указанного диска в байтах.

Пример: отобразить количество занятого пространства на диске C:

… … … …

Var

Free, size: integer;

Begin

Size:= DiskSize(3);

Free:=DiskFree(3);

ShowMessage('Файлынадсике C:занимают'+IntToStr(size-free)+ 'байт');

End;