силка повідомлення EM_EXSETSEL з параметрами, що виходять за межі тексту, проходить без катастрофічних наслідків, значення ігнорується, а курсор переміщається в кінець тексту. Повідомленням EM_REPLACESEL добавляемая рядок вставляється в кінець тексту. І ось, нарешті, спрацьовує ланцюг помилок. p align="justify"> Після вставки курсор переміщається за вставлену рядок, тобто в кінець тексту. Нове положення курсору не відповідає попередньому плюс довжина вставленого рядка рівно на довжину чужий рядки, і це стає причиною виклику винятку. p align="justify"> Драма з грубими помилками і їх ігноруванням отримує трагічне завершення через дрібницю.
Уникнути цієї неприємної ситуації можна, якщо перевизначити GetCount, Insert і Delete в класі TRichEditStrings, або виправити ці функції у вихідних текстах, або написати свої.
Масив даних Array надає можливість використання одно-і багатовимірних масивів (індексованих послідовностей) даних.
Статичні масиви задаються з фіксованим, незмінним розміром. Вони можуть бути одно-і багатовимірними - останні є масивами масивів (масивів і т.д.). p align="justify"> Довжина і розмірність такого багатовимірного масиву завжди задається найвищим, крайнім лівим масивом - батьківським масивом.
Довжина кожної розмірності визначається двома способами, які можуть легко поєднуватися в багатовимірному масиві:
Індексний тип
Тут індекс - цілий тип, зазвичай Byte або Word. Діапазон значень цього типу задає діапазон значень розмірності. Наприклад, тип Byte має діапазон значень від 0 до 255. p align="justify"> Порядкове .. Порядкове
В якості альтернативи діапазон значень кожної розмірності може бути заданий явно порядковими значеннями, такими як 22 .. 44.
Динамічні масиви не мають заздалегідь виділеної ділянки пам'яті. При їх визначенні створюється тільки покажчик. Для таких масивів повинна бути задана їх довжина перед початком їх використання. p align="justify"> Наприклад, SetLength (dynArray, 5) задає одновимірний масив dynArray довжиною 5 елементів. Ця дія виділяє пам'ять під масив. Всі динамічні масиви починаються з індексу 0; кожен підмасив багатовимірних динамічно масивів може мати різний розмір - він, звичайно, є окремим масивом. p align="justify"> Після однієї такої операції SetLength на елементи встановленого масиву можна посилатися, навіть якщо інші масиви не визначені.
І статичні, і динамічні масиви можуть бути передані підпрограмам як параметри. Якщо визначення параметра-масиву не має діапазону значень (тобто це динамічний масив), то ви повинні, як це не парадоксально, передати статичний масив як параметр. Delphi передає довжину як прихований параметр в підпрограму. p align="justify"> Відкритий масив може також бути визначений з кваліфікатора const. Він називається відкритий масив з варі...