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

Новая страница 1
Динамические массивы:

Мы снова возвращаемся к Delphi. Я уже рассказал тебе достаточно много начальных знаний, поэтому я больше не буду размусоливать каждую строчку. Начиная с этого номера, я буду давать тебе пример и объяснять, что в нём происходит. Забирай исходники здесь, и давай посмотрим, что происходит внутри.

Logo
Рис 1. Форма

Цель это примера научить тебя работать с динамическими массивами, ты будешь встречаться с ними постоянно, поэтому я решил уделить этому внимание уже сейчас. Рассмотрим первую процедуру:

var
 r:array of integer;
 i:Integer;
begin
 ListBox1.Items.Clear;
 SetLength(r,10);

 for i:=0 to High(r) do
  begin
   r[i]:=i*i;
   ListBox1.Items.Add(IntToStr(i)+' в квадрате ='+IntToStr(r[i]));
  end;

Эта процедура вызывается по нажатии первой кнопки. В области объявлений VAR я объявил две переменные. Первая это r которая является массивом чисел типа Integer. Вторая i это переменная, которую я буду использовать в качестве счётчика. Переходим к самой процедуре:

Первая строка очищает все строки у ListBox1. Для этого вызывается процедура ListBox1.Items.Clear. Объясню подробней. У ListBox1 есть свойство Items, где хранятся все строки. У Items есть метод Clear, который удаляет все находящиеся в нём строки.

Во второй строке вызывается процедура SetLength, которая выделила память для массива r (первый параметр), размером в 10 элементов (второй параметр). Обращение к элементом будет происходить как r[номер_элемента]. Элементы будут нумероваться от 0 до 9. Вообще, в программировании всё нумеруется с нуля.

Далее используется конструкция:

for выражение1 to выражение2 do
  begin
  end;

Эта конструкция создаёт цикл выполняя операторы между Begin и End, "Выражение2" - "Выражение1" количество раз. Функция High(r) возвращает количество элементов в массиве r. В итоге получается, что цикл будет выполняться от i:=0 (от нуля), до количества элементов в массиве r (до 9). Внутри массива выполняется две строки:

r[i]:=i*i . Здесь i-му элементу массива присваивается i*i.

ListBox1.Items.Add(IntToStr(i)+' в квадрате ='+IntToStr(r[i])); Эта строка добавляет новый элемент в ListBox1. Функция IntToStr переводит число в строку.

С первой процедурой мы разобрались, теперь перейдём ко второй:

type
 TDynArr=array of integer;
var
 r:TDynArr;
 i:Integer;
begin
 ListBox1.Items.Clear;
 SetLength(r,10);

 for i:=0 to High(r) do
  r[i]:=i*i;

 SetLength(r,20);
 for i:=10 to High(r) do
  r[i]:=i*i;

 for i:=0 to High(r) do
  ListBox1.Items.Add(IntToStr(i)+' в квадрате ='+IntToStr(r[i]));

Эта процедура выполняет похожие действия, но с небольшими особенностями. В начале я объявляю новый тип: TDynArr=array of integer . После этого конструкция r:TDynArr; будет означать, что r относится к типу TDynArr, а тот относится к array of integer; . Это тоже самое, что мы писали в первой процедуре r:array of integer; , только такая конструкция удобней, если ты захочешь объявить несколько динамических массивов. Тебе не приходится сто раз писать громоздкую строку r:array of integer; , ты объявляешь новый массив как TDynArr.

Далее идёт всё та же очистка строк и выделение памяти под массив.

for i:=0 to High(r) do
  r[i]:=i*i;

Эта конструкция заполняет десять элементов квадратами числа i. После этого я снова вызываю функцию SetLength(r,20);, в которой говорю, что массив теперь будет состоять из 20-и элементов. Таким способом можно как увеличивать количество элементов, так и уменьшать.

for i:=10 to High(r) do
  r[i]:=i*i;

Здесь я заполняю квадратами числа i элементы начиная с 10 по последний. И в конце я снова заполняю ListBox1 значениями элементов массива.

Теперь о том, как я изменил иконку для программы. Для того, чтобы изменить иконку для формы нужно дважды щёлкнуть в Object Inspector по свойству Icon и выбрать любую.

Для изменения иконки программы нужно щёлкнуть по меню Project и выбрать пункт Option . В появившемся окне выбрать закладку Application и на этой странице нажать кнопку Load Icon .

На сегодня новостей больше нет.

 Исходники примера забирай здесь



Опубликовал admin
1 Июн, Воскресенье 2003г.



Программирование для чайников.