Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабник по Delphi.pdf
Скачиваний:
48
Добавлен:
01.06.2015
Размер:
1.09 Mб
Скачать

32 –

11.Изобразить движущуюся летающую тарелку.

12.Изобразить движущуюся стрелу, образованную двумя равнобедренными треугольниками с общим основанием.

ЛАБОРАТОРНАЯ РАБОТА 6

Цель работы

Целью работы является:

изучение класса TStringList, его свойств, методов и реализация на его основе информационной системы;

изучение набора стандартных подпрограмм для работы с текстовым файлом;

использование стандартных диалогов открытия и сохранения файла TOpenDialog и TSaveDialog.

Основные сведения

Класс TStringList

Класс TStringList предназначен для организации списка, элементами которого являются строки символов. Список обладает следующими особенностями:

может использоваться как для обработки строк произвольного вида, так и для строк специального вида ‘имя=значение’;

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

Основные свойства класса.

Count : Integer. Количество элементов списка.

Duplicates : TDuplicates. Задает реакцию на попытку занесения в список повторяющихся значений: dupIgnore – ввод повторяющихся элементов игнорируется, dupAccept – ввод повторяющихся значений разрешен, dupError – возникает исключительная ситуация.

Sortded : Boolean. При значении True список сортируется по возрастанию, False – не сортируется.

Strings[ Index : Integer] : String. Массив элементов списка. Индекс первого элемента равен 0.

Objects[ Index : Integer] : Tobject. Массив объектов, связанных с элементами списка.

Names[ Index : Integer] : String. Массив левых частей равенств для списка из элементов специального вида.

Values[ Index : Integer] : String. Массив правых частей равенств для списка из элементов специального вида.

Методы списка.

Add( S : String) : Integer. Добавляет в список строку S. Возвращает номер нового элемента.

Insert( Index : Integer; S : String ). Вставляет строку S в несортируемый список в позицию

Index.

AddObject( S : String; Obj : TObject ) : Integer. Аналогичен методу Add, но ещё связывает вставляемую в список строку с объектом Obj.

InsertObject( Index : Integer; S : String; Obj : TObject ). Выполняет действия, аналогич-

ные методу Insert и связывает вставляемый в список элемент с объектом Obj.

LoadFromFile( FileName : String ). Загружает список из текстового файла с именем FileName. Каждая строка файла становится отдельным элементом списка.

SaveToFile( FileName : String ). Сохраняет список в текстовый файл с именем FileName.

Каждый элемент списка становится отдельной строкой файла. Объекты, связанные с элементами списка в файл не сохраняются.

Clear. Очищает список.

Калачев Д.П., Лутай В,Н,. Скороход С.В. Delphi. Лабораторные работы.

33 –

Delete( Index : Integer ). Удаляет элемент списка с номером Index.

Find( S : String; var Index : Integer ) : Boolean. Ищет строку S в отсортированном списке.

Возвращает True, если элемент найден и False – в противном случае. В параметр Index заносится индекс найденного элемента.

IndexOf( S : String) : Integer. Ищет строку S в неотсортированном списке. Возвращает номер найденного элемента или –1, если элемент не найден.

IndexOfName( S : String) : Integer. Ищет строку S в массиве Names. Возвращает номер найденного элемента или –1, если элемент не найден.

IndexOfObject( Obj : Tobject ). Ищет объект Obj в массиве Objects. Возвращает номер найденного элемента или –1, если элемент не найден.

Основные приемы использования списка TStringList.

Для использования списка необходимо выполнить следующие действия.

Описать переменную типа TStringList. Если использование списка локализовано внутри подпрограммы, то описание переменной помещается в раздел Var этой подпрограммы. Если же список используется в разных подпрограммах, то переменную следует описать в секции Public класса формы.

L:TStringList;

В том случае, когда имеется необходимость связать каждый элемент списка с некоторыми данными, в подпрограмме или разделе Interface модуля формы описывается класс – прямой наследник класса TObject, содержащий необходимые поля данных:

Type TData = Class( Tobject ) {описание полей данных}

end;

Создать экземпляр списка методом Create.

L := TStringList.Create;

Для списка, описанного в секции Public формы, наиболее подходящим местом для создания его экземпляра является обработчик события OnCreate формы.

Вставка в список нового элемента производится методом Add.

I := L.Add( СтрокаСимволов );

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

I := L.AddObject( СтрокаСимволов, TData.Create ).

Если элемент уже находится в списке, тогда он связывается с объектом данных при помощи массива Objects:

L.Objects[I] := TData.Create;

При обращении к данным объекта, связанного с элементом I списка необходимо преобразовать объект к типу описанного ранее класса.

With L.Objects[I] as TData do begin {операции с полями данных объекта}

end;

После завершения работы со списком уничтожить его методом Free.

Калачев Д.П., Лутай В,Н,. Скороход С.В. Delphi. Лабораторные работы.

34 –

L.Free;

Для списка, описанного в секции Public формы наиболее подходящим местом его уничтожения является обработчик события OnDestroy формы.

Работа с текстовыми файлами

Для работы с текстовым файлом используется файловая переменная типа TextFile.

Var F:TextFile;

Операции с файлом реализуются при помощи набора стандартных подпрограмм.

FileExists( FileName : String ) : Boolean. Проверяет существование файла, имя и, возможно, путь которого указаны в строке FileName. Возвращает True, если файл существует, и False – в противном случае.

AssignFile( F : TextFile ; FileName : String ). Связывает текстовый файл с именем

FileName с файловой переменной F. При этом существование указанного файла не проверяется.

Reset( F : TextFile ). Открывает текстовый файл F для чтения. При попытке открыть несуществующий фай возникает исключительная ситуация.

Rewrite( F : TextFile ). Открывает новый файл F для записи. Если такой файл уже существовал, то он будет уничтожен и заменен создаваемым файлом.

Read( F: TextFile ; V1, V2, …Vn ). Начиная с указателя текущей позиции вводит из файла F значения переменных V1, V2, … Vn. Вводиться могут переменные целого, вещественного, символьного и строкового типов. После окончания ввода указатель текущей позиции остается в строке, из которой было прочитано последнее значение.

ReadLn( F: TextFile ; V1, V2, …Vn ). Выполняет те же действия, что и процедура Read, но после окончания ввода переводит указатель текущей позиции в начало следующей строки файла.

Write( F : TextFile ; E1, E2, … En ). Выводит в файл F значения выражений E1, E2, … En.

Выражения могут быть целого, вещественного, символьного, строкового и булевского типов.

WriteLn( F : TextFile ; E1, E2, … En ). Выводит в файл F значения выражений E1, E2, … En

и вставляет в него признак конца строки.

WriteLn( F : TextFile ). Вставляет в файл признак конца строки.

Eof( F : TextFile ) : Boolean. Проверяет достигнут ли конец файла F или нет. Возвращает True, если указатель текущей позиции находится в конце файла, False – в противном случае.

Eoln( F : TextFile ) : Boolean. Проверяет достигнут ли конец строки. Возвращает True, если указатель текущей позиции находится в конце строки, False – в противном случае.

CloseFile( F : TextFile ). Закрывает открытый файл F, но не разрывает связи с ним файловой переменной. Файл, открытый для записи, оформляется как файл только после закрытия.

Основные приемы работы с текстовым файлом

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

Создание нового файла.

AssignFile(F,FileName);

Rewrite(F);

{запись данных в файл} CloseFile(F);

Открытие существующего файла.

Калачев Д.П., Лутай В,Н,. Скороход С.В. Delphi. Лабораторные работы.