Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теми з 26.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
72.1 Кб
Скачать

Глава 3 Object Pascal

© - mtError;

О - mtConfirmation;

CD - mtWarning;

О - mtlnformation.

Без изображения - mtCustom.

Параметр Buttons указывается множеством типа TMsgDlgBtn, которое опре-

деляет следующие кнопки:

4

mbYes, mbNo, mbOK, mbCancel, mbAbort,' mbRetry, mblgnore, mbAll

mnNoToAlU mbYesToAll, mbHelp, mbYesNoCancel, mbOKCancel

mbAbortRetry Ignore.

Для того чтобы указать несколько кнопок, следует использовать операцию +

или перечислить их. всех в квадратных скобках и через запятую. Например:

mbOK+mbHelp или [mbOK, mbHelp].

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

ную пользователем кнопку:

mrNone, mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCcincel, mrlgnore, mrAlL

Пример :

procedure TForml.ButtonlClick (Sender: TObject) /

begin

if MessageDlg('Завершитьприложение?',

mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then

begin

MessageDlg('Приложениезавершено.

1

, mtlnformation,

[mbOk], 0, mbOk);

Close;

end;

end;

function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType; Buttons:

TMsgDIgButtons; HelpCtx: Longint; X, Y: Integer): Word;

Отображение диалога в указанной позиции экрана.

Показывает диалог типа DlgType с сообщением, указываемым параметром

Msg, и с кнопками, указываемыми параметром Buttons. Параметр HelpCtx on-js

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

В отличие от предыдущей функции, MessageDlgPos отображает диалог в по- ~

зиции, указанной параметрами X, Y (экранные координаты).

TMsgDlgType;

Integer; const

HelprileName: string;: vvoru, i

Отображение диалога в указанной позиции экрана и с используемым файлом!

справки, отличным от заданного по умолчанию.

91

Показывает диалог типа DlgType с сообщением, указываемым параметром Msg,

и с кнопками, указываемыми параметром Buttons. Параметр HelpCtx опреде-

ляет ГО контекста файла справки, а параметр HelpFileName - имя файла справ-

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

function SelectDirectory(const Caption: string; const Root: WideString; out

Directory: WideString): Boolean;

Отображает диалог, в котором пользователь может выбрать имя каталога,

а также просмотреть все диски, каталоги и файлы.

Функция SelectDirectory отображаетдиалог Browse for Folder (рис. 5.2). Па-

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

рево каталогов (аналогично левой части Проводника Windows).

-Hü

Files:

В- Desktop

i±i~ÖI My Documents

My Computer

$ 3.5 Floppy (A:)

FI t—p SYSTEM (C:)

; S ^ Local Disk (D:)

PROGRAM (E:)

: É Q Local Disk (F : )

. 4J O BOOKS (G:)

: IS-'O Local Disk (H:)

I l+J-Q Removable Disk (I:).

: ffi-^ IRC_NEW (J:)

!+l..irff£ Mm MphiAinflf PtarA« zl

OK

1 Cancel

Рис. 5.2. Аналог, отображаемыйфункцией SelectDirectory

Выбранное пользователем имя каталога заносится в параметр Directory.

Параметр Options может указываться набором следующих значений:

sdAUowCreate, sdPerformCreate, sdPrompt. Если этот параметр равен пустому

множеству, то пользователь не может внутри данного диалога создавать новые

каталоги. «

Если пользователь выбрал каталог и щелкнул на кнопке ОК, то функции воз-

вращаютзначение True. ~

Пример:

procedure TForml.ButtonlClick (Sender: TObject);

-var—strl ^Widest rrngr-res: "Boolean Г '

const str2: WideString=

1

D:

1

;

const str3: string = ' F i l e s : '; 92 Глава 3

begin

res:=SelectDirectory (str3 , s t r 2 , s t r l );

end;

Отметим, что для использования данной функции в секцию uses следует доба-

витьбиблиотеку QDialogs.

procedure ShowMessage(const Msg: string);

Отображает диалог с заданным сообщением Msg и кнопкой ОК.

В строке заголовка данного диалога выводится имя выполнимого файла при-

ложения. ~ ^

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

и каталогами

В функциях и процедурах, работающих с файлами, используется три различных

способа указания файла:

ф имя файла (или каталога) - как правило, используется для поиска или опре-

деления атрибутов доступа и времени записи;

« файловая переменная, определяемая и инициируемая следующим образом:

var F: TextFile;

AssignFile (F, FileName); ~ - --- —-

• дескриптор файла, используемый в функциях Windows API, который опреде-

ляется и инициализируется следующим кодом:

var FileHandle : Integer;

FileHandle := FileOpen (FileName, fmOpenWrite);

procedure AssignFile(var F; FileName: string);

Выполняет инициализацию файловой переменной. F может быть файловой

переменной для любого типа файла. FileName указывает имя файла, ассоции-

руемое далее во всех операциях с файловой переменной F. Если параметр

FileName является пустой строкой, то файловая переменная F ассоциируется

со стандартными файлами ввода (Reset (F)) или вывода (Rewrite (F)).

Пример:

var F: TextFile; S: ^string;

begin

if OpenDialogl.Execute then

begin { Показатьдиалог Open }

AssignFile(F, OpenDialogl.FileName);

{Fі 1 е^те 'ІшрІІдеЖвыбранное -в -диалоге}-

Reset(F);

Readln(F, S);

{Открываем файл}

{Читаем из файла первую строку} Object Pascal 93

Editl.Text := S; {Помещаем эту строку в компонент типа TEdit}

CloseFile(F); {Закрываемфайл}

end;

end;

procedure ChDir(S: string);

Изменяет текущий каталог и, если указан, текущий диск.

procedure CloseFiIe(var F); _

procedure Close(var F);

Закрывает файл, ассоциированный с файловой переменной F. Ранее этот файл

был открыт вызовом одной из функций: Reset, Rewrite или Append.

function CreateDir(const Dir: string): Boolean;

Создает новый каталог и при успешном завершении возвращает значение True.

Пример:

begin

if not DirectoryExists('C:\MyWork') then

if not CreateDirC C:\MyWork

1

) then

raise Exception.Create (He могусоздать C:\MyWork');

end;

function De!eteFiIe(const: string): Boolean;

Удаляет файл с именем FileName и при успешном "завершении возвращает

значение True.

function DirectoryExists(Name: string): Boolean;

Определяет, существует ли каталог с указанным именем.

function DiskFree(Drive: Byte): Int64;

Определяет количество свободного места на диске (в байтах). Параметр Drive

указывает проверяемый диск:

0 - текущий диск;

1 - диск А;

2 - д и с к В;

3 - диск С; . •

4 - диск D и т. д. __ _ ___ - - • -

Если диск указан неверно, то функция возвращает значение - 1.

function DiskSize(Drive: Byte): Int64;

Определяет размер диска (в байтах). Параметр Drive указывает проверяемый

ДИСК.- --- - . - -----

0 - текущий диск;

1 - диск А; 94 Г лава 3

2 - д и с к В;

3 - диск С;

4 - диск D и т. д.

ЕСЛИ ДИСК указан неверно, то функция возвращает значение - 1.

procedure FileClose(Handle: Integer);

Закрываетфайл, открытыйвызовомфункции FileOpen или FileCreate.

Отметим, что при использовании файловой переменной закрывать файл сле-

дуетвызовомпроцедуры CloseHle.

function FileDateToDateTime(FiIeDate: Integer): TDateTime;

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

и FileAge (дата в формате DOS), в формат типа TDateTime, используемый

другими функциями и процедурами VCL-библиотеки.

function FileExists(const FileName: string): Boolean;

Определяет, существует ли файл, указанный параметром FileName.

function FileGetAttr(const FileName: string): Integer;

Возвращает атрибуты файла в виде строки битов. Возвращаемое значение

может быть комбинацией атрибутов, приведенных в следующей таблице.

Константа Значение О п и с а н и е ^

fa Readonly $00000001 Доступ только для чтения

faHidden $00000002 Файл скрыт

faSysFiJe $00000004 Системный файл

faVolumelD $00000008 Идентификатор диска

faDirectory $00000010 Каталог

faArchive $00000020 Архивный файл

faAnyFile $0000003F Любой файл

При возникновении ошибки функция возвращает значение - 1.

function FileGetDate(Handle: Integer): Integer;

Возвращает дату и время (в формате DOS) создания или последнего измене-^

ния файла. Если указан неверный -параметр Handle, то функция возвращает|

значение - 1 .

v

I

Для преобразования полученного значения даты в значение типа TDateTime *

следуетиспользоватьфункцию FileDateToDateTime. f

function FileOpen(const FileName: string;-Mode:_LongWprd): lnteger;

Открывает указанный файл. Параметр FileName определяет имя открываемо-

го файла, а параметр Mode - режим использования открытого файла. Object Pascal 95

При успешном завершении функция возвращает дескриптор открытого фай-

ла, используемый в дальнейшем в процедурах и функциях для доступа к это-

му файлу. При неудачном завершении функция возвращает значение - 1.

Отметим, что Object Pascal предоставляет свой более удобный способ досту-

па к файлам через файловую переменную, а использование дескриптора фай-

ла поддерживается функциями Windows API.

Пример:

var FileHandle : Integer;

-begin -

FileHandle := FileOpen(FileName, fmOpenWrite);

if FileHandle < 0 then

ShowMessage('He могуоткрытьфайл');

end;

function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;

Читает из файла, указанного дескриптором Handle, заданное количество байт.

Параметр Count определяет количество читаемых байт, а параметр Buffer -

буфер, в который записываются читаемые байты.

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

function FileSearch(const Name, DirList: string): string;

Выполняет поиск файла в. указанных каталогах. Параметр Name определяет

имя искомого файла, а параметр DirList - список каталогов, в которых вы-

полняется поиск, разделенных символом ;.

Если файл найден, то функция возвращает полный путь доступа к файлу,

а если нет - пустую строку.

function FiIeSeek(Handle, Offset, Origin: Integer): Integer; overload;

function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer):

Int64; overload;

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

FileOpen или FileCreate.

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

параметром Origin.

Параметр Origin указывается одним из следующих значений:

0 - выполнять отступ от начала файла; '

1 - выполнять отступ от текущей позиции;

2 - выполнять отступ от конца файла. *

При успешном завершении функция возвращает значение новой текущей по-

значение - 1.

Отметим, что при работе с файловой переменной для перемещения текущей

позиции файла следует использовать функцию Seek. 96 Г лава 3

function FileSetAttr(const FileName: string; Attr: Integer): Integer;

Устанавливает новые атрибуты файла.

Например: FileSetAttr(

1

MyFile.ini', faReadOnly);.

function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;

Записывает в указываемый дескриптором файл Count байт из буфера Buffer.

При успешном завершении функция возвращает количество записанных бай-

тов. В противном случае возвращается значение - 1.

Отметим, что при работе с файловой переменной для записи в файл следует

использовать функции Write, Writeln или BlockWrite—

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

Выполняет поиск файла с указанными параметром Attr атрибутами в каталоге

Path.

Если файл найден, то функция возвращает значение 0, а в параметр F зано-

сится информация о найденном файле.

Тип TSearchRec описываетсякак

type TSearchRec = record

Time: Integer; Size: Integer; Attr: Integer;

Name: TFileName; ExcludeAttr: Integer;

- FindHandle: THändle; FindData: TWin32FindData;

end; —

function FindNext(var F: TSearchRec): Integer;

Продолжает поиск файла, начатый функцией FindFirs. При нахождении под-

ходящего файла информация о нем заносится в параметр F, и функция воз-

вращаетзначение 0.

procedure FindClose(var F: TSearchRec);

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

FindFirst.

function GetCurrentDir: string;

Возвращает полный путь для текущего каталога.

procedure GetDir(D: Byte; var S: string);

Записывает в параметр S текущий каталог для указанного параметром D диска

(0 - диск по умолчанию, 1 - диск А и т. д.).

function RemoveDir(const Dir: string): Boolean;

Удаляет пустой каталог, указанный параметром Dir.

function RenameFile(const OldName,. JSewName:sjring): Boolean;

Изменяет имя файла с OldName на NewName. Object Pascal 97

function SetCurrentDir(const Dir: string): Boolean;

Устанавливаеттекущийкаталог.

procedure ProcessPath (const EditText: string; var Drive: Char; var

DirPart: string; var FilePart: string);

Выполняет разбор полного имени файла, указанного параметром EditText, на

диск (Drive), путь (DirPart) и имя файла (FilePart).

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

файлами через файловую переменную

procedure AssignPrn(var F:);

Назначает файловую переменную типа TextFile {Text) текущему принтеру.

Далее всегда следует вызывать процедуру Rewrite. После, этого назначения

вывод функций Write или Writeln, пишущих в эту переменную, будет перена-

правлен на принтер.

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

па TextFile.

Пример:

{Этот код выполняет печать ка текущий принтер строки текста, направляемой

в переменную MyFile, шрифтом, определяемым свойством Font объекта

- TCanvas} ; - / * ^ " * ~

var

MyFile: TextFile;

begin

AssignPrn(MyFile); {Назначение переменной}

Rewrite(MyFile);

Writeln(MyFile, 'Напечатать строку на принтере');

System.CloseFile(MyFile);

end;

function Eoln [(var F: Text) ]: Boolean;

Определяет, является ли текущая позиция файла концом строки или концом

файла. Если параметр указан, то он определяет файловую переменную.

В противном случае используется стандартная переменная Input, ассоции-

руемая с устройством ввода (var Input: Text;). Как правило, устройством вво-

да является клавиатура.

Вызов Eoln(F) возвращает значение True, если текущая" позиция файла ука-

зывает на конец строки или на конец файла. Во втором случае одновременно

и функция Eof (F) должна возвращать значение True.

procedure Erase(var F); _

Удаляет внешний файл, ассоциируемый с файловой переменной F.

4 Зак. 11 98 Глава 3

Отметим, что перед удалением файл должен быть закрыт.

procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);

Читает строку текста.

Пример:

{Код консольного приложения, читающего ввод с клавиатуры}

s : string;

begin

Write('Введитестрокутекста:

Readln(s); _ . . .

Writelnf'BbDi введентекст: \ s ) ;

- Writeinl

J

-Для ^выхода нажмите клавишу Enter ' ); - -

Readln; _

end; ' ' : ^ г..;::;:" \ - г : . : : : "™ —' —:::-г" . : : :: ~

procedure SetTextBuf(var F: Text; var Buf [ ; Size: Integer] );

Назначает текстовому файлу F вместо внутреннего 128-байтового буфера но-

вый буфер, указываемый параметром Buf.

procedure Writeln([ var F: Text; ] PI [, P2, ...,Pn ] );

Записывает строку текста, включая символы конца строки.

Если параметр,F,не,указан, то для консольного приложения Delphi автомати-

чески ассоциирует файл вывода с Output-файлом.

Процедуры и функции обшего назначения

procedure Веер;

Выдает звуковой сигнал (вызывая функцию Windows API MessageBeep).

procedure Exit;

Выполняет немедленный выход из текущей процедуры.

procedure Break;

Выполняет немедленный выход из текущего оператора цикла for, while

repeat. Управление передается на следующий после цикла оператор.

procedure Continue;

Прерывает текущую итерацию оператора цикла for, while или repeat и пере-

ходит на начало следующей итерации. ГЛАВА 4

О Б Ъ Е К Т Ы И К О М П О Н Е Н Т Ы

В этой главе дается краткий обзор компонентов, входящих в VCL-библиотеку.

ОСНОВНЫЕ понятия

Объекты

Объект Delphi представляет собой набор свойств и методов, включающих также

обработчики событий. Свойства, называемые иногда атрибутами, являются дан-

ными, содержащимися в объекте. Методы описывают действия, реализованные

для данного объекта.

Все объекты имеют общего предка - класс TObject. < -

Объект - это экземпляр класса. Например, форма реализуется классом TForm.

При создании формы:

; 1

1. Создается класс TForm 1, производимый от Tform. . . - -

2. Объявляется переменная объектного типа (объект) Form 1. При объявлении

переменной происходит создание объекта (выделение йамяти)7 "

Все компоненты, как визуальные, так и невизуальные, добавляемые в форму

во время проектирования, становятся дочерними для формы. Для них автома-

тически объявляются переменные соответствующего объектного типа.

Компоненты

Компонент Delphi - это особый вид объектов - визуальный объект (визуальный

для проектирования, а не для отображения пользователю). Создавать и редактиро-

вать такой объект можно как программным путем, так и на этапе проектирования.

Компоненты при выполнении программы могут быть визуальными или невизу-

^альными. Последние не могут быть непосредственно отображены во время вы-

полнения программы (например, компонент TDatabase).

Все компоненты имеют общего предка - класс TComponent. '

Delphi предоставляет широкий набор компонентов, называемый иногда.

VCL-библиотекой. Все компоненты Delphi могут быть доступны через палитру

.компонентов. ' ~ - — — — ' — — — — — - - - - - - - - ^

Элементы управления

Часть компонентов является элементами управления. В основном это элементы

управления WmdQ^^ДQaтy^ возможен не только на

г^этапе проектирования, но и во время выполнения приложения.