Перейти до основного вмісту

Динамічний масив: що і як

Обробка табличних даних вимагає попереднього повідомлення про кількість елементів масиву, який буде використовуватися. А що робити. якщо кількість елементів масиву зарані не відома, оскільки залежить, наприклад, від того, скільки саме їх захоче ввести користувач?

У цьому випадку доцільним стає використання т.зв. динамічного масиву, кількість елементів якого формується не заздалегідь, а безпосередньо під час виконання програми.
Для опису динамічного масиву в розділ var записуємо таку конструкцію:
a: array of real;
Як бачимо, вона відрізняється від звичної нам форми тільки відсутністю квадратних дужок з зазначенням кількості елементів.
Далі в ході виконання програми потрібно передбачити отримання кількості елементів динамічного масиву. У разі введення даних користувачем у поле Memo, це можна зробити так:
k:= Memo1.Lines.Count;
де k - кількість елементів.
Усе, що залишилося зробити - задати кількість елементів, зазначивши, що наш новий масив a матиме довжину k
SetLength(a,k);
Після цього новий масив можна використовувати звичайним чином.

Приклад:

Заповнити масив, даними, введеними користувачем з клавіатури в багаторядкове текстове поле
var
    Form1: TForm1;
    a:array of real;
    i,k: integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
    k:=Memo1.Lines.Count;
    SetLength(a,k);
    for i:=1 to k do
    a[i]:=StrToFloat(Memo1.Lines[i-1]) //не забудьмо, що рядки в полі Memo нумеруються з нуля
end;