Файл: Лабораторная работа 1 Часть i 13 лабораторная работа n 1 Часть ii 16 лабораторная работа n 1 Часть iii 1.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 327
Скачиваний: 2
СОДЕРЖАНИЕ
ЛАБОРАТОРНАЯ РАБОТА № 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.
Тема 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
Для записи данных из файла применяют процедуры:
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;
Полезные функции, применяемые при работе с файлами
-
Переименование файла
Function RenameFile (const Oldname, Newname: string): Boolean – функция возращает значение true, если переименование прошло успешно. Переименовать можно только закрытые (не открытые для чтения или записи) файлы.
-
Определение факта существования файла
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');
-
Определениеразмерафайла
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;
-
Удаление файла
Fname_:_string_);'>Function_DeleteFile_(const_Fname:_string):_boolean;'>Function DeleteFile (const Fname: string): boolean; - возвращает true при успешном удалении файла.
-
Определение и установка атрибутов файла
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)
Как отменить атрибуты? – установить новые, в результате все бывшие отменяются.
-
Поиск файлов
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;
-
Выделение частей имени файла
Function ExtractFileExt (const Fname: string); - выделяет расширение из указанного имени файла;
Function ExtractFileDir (const Fname: string); - выделяет из полного имени файла имя устройства и маршрут;
Function ExtractFileName (const Fname: string); - выделяет из полного имени файла чистое имя, отбрасывая путь и устройство.
-
Копирование файлов
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;
Функции для работы с каталогами и дисками
-
Function CreateDir (const Dir: string): Boolean; - создается новый каталог Dir, если функция возвращает True. -
Function RemoveDir (const Dir: string): Boolean; - удаляет пустой каталог с диска. -
Function SetCurrentDir (const Dir: string): boolean; - устанавливает текущий каталог Dir. -
Function GerCurrentDir: string; - определяет текущее имя файла. -
Function DiskFree (Drive: byte); - определяет размер свободного пространства на указанном диске в байтах.
Drive =1, A:
Drive =2, B:
Drive =3, C:
Drive =4, D: и т.д.
-
Function DiskSize (Drive: byte); - определяет общий размер указанного диска в байтах.
Пример: отобразить количество занятого пространства на диске C:
… … … …
Var
Free, size: integer;
Begin
Size:= DiskSize(3);
Free:=DiskFree(3);
ShowMessage('Файлынадсике C:занимают'+IntToStr(size-free)+ 'байт');
End;