(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Работа с динамическими массивами в Delphi (исходники, документация)

Источник: codingclub
Трофим Роцкий

Что такое динамический массив? Динамический массив есть контейнер, содержащий определенное число данных, которые могут быть записаны либо извлечены для каких-нибудь с ними действий. Проще говоря, это лимитированный список различных значений одной переменной (Integer, String и т.д.), каждый из которых можно затребовать простым указанием порядкового номера. Зачем он нужен? как с ним работать? - читайте далее и всё поймете.

Прежде всего, надо продекларировать наш массив (то бишь записать его название). Название массива имеет такой вид:

<Имя_Массива>: Array[<область_определения>] of <Тип_переменных>

Идентификаторы Array и of постоянны, так что их нужно указывать в любом случае. Имя массива зависит только от вашей фантазии. Область определения имеет вид [X..Y], где первая величина - наименьшее значение числа определяемых параметров, вторая - наибольшее. Заметьте, данное свойство указывается именно в квадратных скобках - собственно значения X и Y входят в область определения массива. Повторю, что эти значения определяют именно порядковые номера хранящихся в массиве значений и предназначены для их чтения («вытаскивания» из массива) посредством указания порядкового номера. X и Y могут быть только простыми числами. Так же они могут быть частями какого-либо упорядоченного целого: например, можно указать [‘а’..’я’], и массив будет состоять из тридцати трех значений (по числу букв алфавита).

Далее после идентификатора of указывается тип переменных, в котором хранятся данные в массиве. Если это Boolean, то всякий параметр может иметь значение только True или False. Если Integer - то этот же параметр является простым числом, и т.д.

Сейчас мы по всем правилам продекларируем какой-нибудь массив:

EditArray: Array[1..5] of String

Наметанным глазом можно прочитать здесь следующее: имеется массив с именем EditArray, в котором хранится пять различных значений типа String (текст). Кажется, всё правильно :). Но этот массив пуст: в нем нет еще никаких данных. Сейчас мы используем его, чтобы запомнить строковую информацию, содержащуюся в TEdit’ах и, когда нужно, достать ее.

Выложите на форму пять компонентов TEdit и две кнопки. Назовите их GetBtn и ResultBtn. Чтобы можно было отличать строки ввода друг от друга, измените им в редакторе свойств параметр Tag: у Edit1 на «1», у Edit2 на «2» и так далее вплоть до «5» у Edit5.

//...

var

Form1: TForm1;

EditArray: Array[1..5] of String;

//...

//записываем информацию в массив

procedure TForm1.GetBtnClick(Sender: TObject);

var

i: integer;

begin

//перебираем все компоненты 

for i:=0 to ComponentCount-1 do

if Components[i] is TEdit then

EditArray[TEdit(Components[i]).Tag]:=TEdit(Components[i]).Text;

end;

//читаем информацию из массива

procedure TForm1.SetBtnClick(Sender: TObject);

var

i: integer;

begin

for i:=0 to ComponentCount-1 do

if Components[i] is TEdit then

TEdit(Components[i]).Text:=EditArray[TEdit(Components[i]).Tag];

end;

Теперь введите в Edit’ы какой-нибудь текст и нажмите GetBtn. Сотрите текст и нажмите ResultBtn.

Ага! Вот мы и поработали с декларированным массивом. Но надо иметь ввиду, что есть и константированные массивы с изначально записанными значениями, которые нельзя изменить. Такие массивы прописываются в разделе const. Они полезны, когда нужно выполнить множество низкоуровневых операций.

В одном из последних выпусков журнала «Хакерспец» вебмастерам предлагался весьма простой способ обозначить копирайт текстов своего сайта: менять некоторые русские буквы на латинские, которые выглядят точно так же. (Чтобы, если информацию все-таки умыкнут, можно было воспользоваться этим отличием для подтверждения авторских прав). Вот моя реализация данного совета с помощью констатированного массива. Осчастливьте вашу форму компонентами TRichEdit и TButton, по событию OnClick последнего поставьте следующий код:

procedure TForm1.Button1Click(Sender: TObject);

const

RusSymbols: Array[1..10] of ShortString = ('а','с','о','р','х','А','С','О','Р','Х');

EngSymbols: Array[1..10] of ShortString = ('a','c','o','p','x','A','C','O','P','X');

var

i, position: integer;

Text: String;

begin

Text:=RichEdit1.Lines.Text;

repeat

//Массив состоит из десяти символов, 

//поэтому цикл повторится 10 раз.

for i:=1 to 10 do begin

position:=pos(RusSymbols[i],Text);

if position>0 then begin

delete(Text,position,1);

insert(EngSymbols[i],Text,position);

end;

end;

until position<=0;

RichEdit1.Lines.Text:=Text;

end;

Закодируйте таким образом какой-нибудь текст и проверьте правописание полученного в MS Word.

Теперь вы знаете простейшие примеры работы с динамическими массивами.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 16.01.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Quest Software. SQL Navigator Professional Edition
SAP CRYSTAL Reports 2013 WIN INTL NUL
Rational ClearQuest Floating User License
Rational ClearCase Multisite Floating User License
Business Studio 4.2 Enterprise. Конкурентная лицензия + Business Studio Portal 4.2. Пользовательская именная лицензия.
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Мир OLAP и Business Intelligence: новости, статьи, обзоры
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100