Мы снова возвращаемся к 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*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 .
На сегодня новостей больше нет.
|