Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Else ShowMessage('Файл не найден'); // вывод сообщения





end;

Динамические массивы.

Динамические массивы введены в Object Pascal, начиная с Delphi 4. Они отличаются от обычных статических массивов тем, что в них не объявляется заранее длина – число элементов. Поэтому динамические массивы удобно использовать в приложениях, где объем обрабатываемых массивов заранее неизвестен и определяется в процессе работы программы.

Объявление динамического массива содержит только его имя и тип элементов – один из базовых или созданных пользователем типов. Синтаксис объявления:

<имя>: array of <базовый тип>

Например,

Var A: array of integer;

При объявлении динамического массива место под него не отводится. Прежде, чем использовать массив, надо задать его размер процедурой SetLength. В качестве аргументов в нее передаются имя массива и целое значение, характеризующее число элементов. Например, оператор SetLength(A, 10) выделит для массива А место в памяти под 10 элементов и задаст нулевые значения для всех элементов. Повторное применение SetLength к уже существующему в памяти массиву изменяет его размер. Если новое значение размера больше предыдущего, то все значения элементов сохраняются и в конце добавляются новые нулевые элементы. Если же новый размер меньше предыдущего, то массив усекается, и в нем остаются значения первых элементов.

Если динамический массив уже размещен в памяти, к переменной этого массива можно применять функции Length – длина, High – наибольшее значение индекса и Low – наименьшее значение индекса (всегда 0). Если массив имеет нулевую длину, то High возвращает -1. Справедливо также следующее равенство: High=Length-1.

Сама переменная динамического массива является указателем на начало массива. Если место под массив еще не выделено, значение переменной равно nil.

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

A:=nil; или Finalize(A); или SetLength(A, 0);

 

Пример создания приложения для работы с файлами.

Задание. Создать Windows-приложение, в котором имеется меню, представленное на рис.1. Путем выбора из меню открывается текстовый файл. Содержимое файла загружается в компонент Memo1. При выборе пункта меню «Сохранить»текст из компонента Memo1 должен сохраняться в файле. На форме разместить две кнопки: «Создать массив» и «Добавить». При нажатии на кнопку «Создать массив» в некоторый массив А записываются строки открытого файла. При нажатии на кнопку «Добавить» в компонент Memo добавляется последний элемент массива.

 
 

 


 

 

Рис. 1.

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

1. Страница - компонент MainMenu .

2. Страница - 2 компонента Button .

3. Страница - компонент Memo .

4. Страница - компонент OpenDialog .

5. Страница - компонент SaveDialog .

Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис. 2.

Button1  

Рис.2.

После установки компонента MainMenu на форму необходимо создать его опции. Для этого следует выбрать свойство Items в окне Инспектора объектов, после чего на экране появится конструктор меню. Для каждого пункта меню в окне Инспектора объектов в свойстве Caption необходимо указать заголовок: «Файл», «Выход», «Открыть», «Сохранить», «Текст» соответственно.

В самом начале работы во избежание ошибок ввода-вывода и доступа к памяти кнопки «Создать массив» и «Добавить» должны быть недоступны. Для этого необходимо в окне инспектора объектов установить свойства Enabled компонентов Button1 и Button2 в значение false. Кнопка «Создать массив» становится доступной после загрузки содержимого файла в компонент Memo1, а кнопка «Добавить» - после нажатия кнопки «Создать массив».

Для пунктов меню «Открыть-Текст», «Сохранить» и «Выход» необходимо создать методы - обработчики событий onClick.

procedure TForm1.MenuTextClick(Sender: TObject);

begin

if OpenDialog1.Execute then

if FileExists(OpenDialog1.FileName) then

begin

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Button1.Enabled:=true;

end

else ShowMessage('Файл не найден');

end;

procedure TForm1.MenuQuitClick(Sender: TObject);

begin

close;

end;

procedure TForm1.MenuSaveClick(Sender: TObject);

begin

if SaveDialog1.Execute then

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

Для компонента Button1 (кнопка «Создать массив») создадим метод - обработчик события onClick, в который поместим следующие операторы:

var f:textfile; s:string; i:integer;

begin

i:=0;

assignfile(f,Opendialog1.FileName); reset(f);

while not eof(f) do

begin

readln(f,s); setlength(a,i+1); a[i]:=s; inc(i);

end;

Button2.Enabled:=true;

end;

Для компонента Button2 (кнопка «Добавить») создадим метод - обработчик события onClick, текст которого выглядит следующим образом:

memo1.Lines.Add(a[high(a)]);

Динамический массив А, используемый в обоих методах – обработчиках, должен быть объявлен в разделе описания переменных следом за словом implementation.

Содержание отчета.

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

Контрольные вопросы.

1. Работа с файлами в Delphi. Стандартные функции для работы с файлами. Работа с содержимым файлов через компоненты.

2. Компоненты – диалоги: OpenDialog, SaveDialog и т.д.

3. Динамические массивы. Примеры объявления и использования.

 

Лабораторное задание.

 
 

 

 


Рис. 3.

Разработать приложение, в котором имеется меню, представленное на рис. 3. Путем поочередного выбора из меню открываются 2 файла. Текст должен загружаться в компонент Memo или ListBox (по усмотрению студента), рисунок – в компонент Image. На форме должна быть размещена кнопка «Сброс», при нажатии на которую поле компонента Memo (ListBox) очищается. Структура меню может меняться по усмотрению студента.

Варианты.

1. На форме разместить дополнительно кнопки: «Создать массив» и «Добавить». При нажатии на кнопку «Создать массив» в некоторый массив St записывается длина каждой строки открытого файла и последним элементом этого массива должен быть размер файла. При нажатии на кнопку «Добавить» в компонент Memo добавляется содержимое массива в виде одной строки.

2. Разместите на форме кнопку «Добавить» и компонент Label. По нажатию кнопки «Добавить» каждая третья строка из текстового редактора добавляется к динамическому массиву Mt. При каждом нажатии кнопки «Добавить» метка Label отображает длину записанной строки и длину модифицированного массива. В случае достижения конца файла в компонент Label необходимо вывести строчку «Массив сформирован», кнопку «Добавить» сделать недоступной, а содержимое массива вывести в текстовый редактор.

3. Разместить на форме кнопки «Предыдущий» и «Следующий» и компонент Label. Создайте некоторый файл и запишите в него произвольную последовательность целых чисел. При выборе пункта меню «Текст» считать из него все числа в динамический массив Values, в компоненте Label должно отображаться первое число. По нажатию кнопки «Предыдущий» компонент Label должен отображать предыдущее число, по нажатию кнопки «Следующий» – следующее число. Если достигнут конец/начало последовательности, то кнопки перестают работать. При каждом нажатии кнопок в компонент ListBox заносится очередной элемент массива, отображаемый в компоненте Label.

4. На форме поместите кнопку «Создать массив». При нажатии на эту кнопку текст, находящийся в текстовом редакторе, кодируется. Коды символов заносятся в динамический массив Kod, содержимое которого добавляется в текстовый редактор.

5. На форме поместите компонент Label, кнопку «Добавить». При выборе пункта меню «Текст» необходимо определить размер открываемого файла и добавить его в конец файла. Компонент Label должен отобразить размер файла до и после модификации. Создайте результирующий массив, в который будут заноситься размеры всех открытых файлов после их модификации. При нажатии кнопки «Добавить» содержимое массива отображается в текстовом редакторе.

6. Разместите на форме кнопку «Добавить». Создайте файл и запишите в него последовательность действительных чисел. При выборе пункта меню «Текст» считать из файла все числа в динамический массив V. По нажатию кнопки «Добавить» в текстовый редактор должны быть добавлены все числа из динамического массива V.

7. Разместите на форме кнопки «Выбрать» и «Загрузить» и 2 компонента Memo. Текст должен загружаться в компонент Memo1. По нажатию кнопки «Выбрать» в массив М записывается каждая вторая строка файла. По нажатию кнопки «Загрузить» в компонент Memo2 загружаются элементы динамического массива М.

8. Разместите на форме кнопки «Размер1», «Размер2» и «Загрузить» и 2 компонента Memo. Первая половина текста загружается в компонент Memo1, вторая - в компонент Memo2. По нажатию кнопки «Размер1» в массив М записывается размер первой половины файла и количество строк. По нажатию кнопки «Размер2» в массив М2 записывается размер второй половины файла и количество строк. По нажатию кнопки «Загрузить» в компоненты Memo1 и Memo2 загружаются элементы массивов М1 и M2.

9. На форме поместите кнопку «Создать массив». При нажатии на эту кнопку текст, находящийся в текстовом редакторе, сохраняется по словам в массиве Word, содержимое которого добавляется в текстовый редактор.

10. Разместите на форме кнопку «Добавить» и компонент Label. По нажатию кнопки «Добавить» каждая четвертая строка из текстового редактора добавляется к динамическому массиву M. При каждом нажатии кнопки «Добавить» метка Label отображает длину записанной строки и длину модифицированного массива. В случае достижения конца файла содержимое массива вывести в окно текстового редактора.

Лабораторная работа №3.







Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.