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

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

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


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. ListBox1.Items.Add(IntToStr(i)+' в квадрате ='+IntToStr(r[i])); Эта строка добавляет новый элемент в ListBox1. Функция IntToStr переводит число в строку. С первой процедурой мы разобрались, теперь перейдём ко второй: [DELPHI]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 .

На сегодня новостей больше нет.
Теги:
массивы, списки
Добавлено: 01 Августа 2018 07:24:27 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...