клас tstringlist

Delphi для професіоналів. Списки і колекції

property Strings [Index: Integer]: string read Get write Put; default;

Для роботи з властивістю використовуються внутрішні методи Get і Put. в яких застосовується внутрішня змінна FList.

TStringltem = record FString: string;

TStringltemList = array [0..MaxListSize] of TStringltem;

Максимальний розмір списку обмежений константою

MaxListSize = Maxint div 16;

значення якої після нехитрих обчислень складе 134 217 727. Таким чином, видно, що строковий список Delphi теоретично кінцевий, хоча на практиці набагато частіше розмір списку обмежується розміром доступної пам'яті.

Звернення до окремого елементу списку може здійснюватися через властивість strings таким чином:

Обидва способи рівноцінні.

За допомогою простого присвоювання можна задавати нові значення тільки тоді, коли елемент вже створений. Для додавання нового елемента використовуються методи Add І AddStrings.

function Add (const S: string): Integer;

додає в кінець списку новий елемент, привласнюючи йому значення s і повертаючи індекс нового елементу в списку.

procedure Append (const S: string);

просто викликає функцію Add. Єдина відмінність полягає в тому, що метод не повертає індекс нового елементу.

procedure AddStrings (Strings: TStrings);

додає до списку цілий набір нових елементів, які повинні бути задані іншим списком, переданим в параметрі strings.

При необхідності можна додати новий елемент в довільне місце списку. Для цього застосовується метод

procedure Insert (Index: Integer; const S: string);

який вставляє елемент s на місце елемента з індексом index. При цьому всі зазначені елементи зміщуються на одну позицію вниз.

Для видалення елемента списку використовується метод

procedure Delete (Index: Integer);

procedure Move (Curlndex, Newlndex: Integer);

переміщує елемент, заданий індексом curindex. на нову позицію, задану індексом Newlndex.

procedure Exchange (Indexl, Index2: Integer);

міняє місцями елементи з індексами index1 і index2.

Досить часто в списках размешается строкова інформація наступного вигляду:

Як приклад можна навести рядки з файлів INI або системного реєстру. Спеціально для таких випадків у списку передбачено представлення рядків в двох властивостях. У властивості Names міститься текст до знаку рівності. У властивості values ​​міститься текст після знаку рівності за замовчуванням. Однак символ-роздільник можна замінити на будь-який інший, використавши властивість

property NameValueSeparator: Char;

Доступ до значень властивості values ​​здійснюється за значенням. Наприклад, якщо в списку є рядок

то значення властивості value дорівнюватиме

Крім цього, значення властивості value можна отримати, якщо відомий його індекс:

property ValueFormlndex [Index: Integer]: string;

property Objects [Index: Integer]: TObject;

Властивість strings елементу і властивість objects пов'язаного з ним об'єкта мають однакові індекси. Якщо рядок не має зв'язаного об'єкту, то властивість objects одно Nil. Один об'єкт може бути пов'язаний з декількома рядками списку одночасно.

Найчастіше об'єкти потрібні для того, щоб зберігати для кожного елемента додаткову інформацію. Наприклад, в списку міст для кожного елемента можна додатково зберігати населення, площа, адміністративний статус і т. Д. Для цього можна створити приблизно такий клас:

Для того щоб додати до рядка зі списку об'єкт, використовується метод AddObject.

function AddObject (const S: string; AObject: TObject): Integer; virtual;

Зверніть увагу, що в параметрі AObject необхідно передавати покажчик на об'єкт. Найпростіше це зробити таким чином:

Чи знаєте Ви, що діаграма діяльності, Activity diagram - це методологія об'єктно-орієнтованого проектування, призначена для деталізації особливостей алгоритмічної і логічної організації системи. При цьому кожна дія розчленовується на фундаментальні процеси. На діаграмі діяльності управління здійснюється:
- або через потоки управління (явно);
- або через які визначаються потоки даних (неявно).

НОВИНИ ФОРУМУ
Лицарі теорії ефіру

Про це Корнілов написав на своїй сторінці в соцмережі.

За словами Корнілова, тоді його повідомлення було сприйнято з недовірою.

Тепер же Володимир Корнілов вирішив повернутися до цієї теми, в зв'язку з чим публікує у себе в фейсбуці фотографії загадкових ізраїльтян, які брали участь в одеській бійні.

Серед безлічі питань, на які Корнілов, за його словами, хотів би отримати відповідь, наприклад, такі:

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

Води озер, морів і океанів північного по --------- Лушар обертаються проти годинникової -з-т - р-е-л-к-і, а води південного полушарія- в-ра - ща-ють -ся- по- ч-асів стрілкою, - обра-зуя- -гіг-ант-скі-е вод-ово-роти.

Основною причиною обертання вирів є місцеві вітру.
І чим вище швидкість вітрів тим вище швидкість обертання вирів і як наслідок, вище відцентрова сила вирів, завдяки чому підвищується рівень вод морів і океанів.
А чим нижче відцентрова сила вирів, тим нижче рівень вод морів і океанів.

Швидкість течій, по периметру морів і океанів не скрізь однакова і залежить від глибини узбережжя. У мілководній частині моря швидкість течій збільшується, а в глибоководній частині моря зменшується.
Сезонні коливання рівня вод спостерігаю-ться не по всьому узбережжю морів і океан-ів, а тільки в тих узбережжях де висока кутова швидкість течій і як наслідок, висока відцентрова сила води. (Відцентрова сила F = v / r).
На прямолінійних узбережжях, де течії не мають кутовий швидкістю, рівень вод не підвищується.

Схожі статті