Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OAP(теория).doc
Скачиваний:
49
Добавлен:
15.02.2016
Размер:
687.62 Кб
Скачать

20. Особенности работы процедуры FreeMem.

Процедура FreeMem освобождает память, используемую переменнойMemoryPointer.  Вы можете произвольно определитьMemorySize, который будет освобожден. Однако, Вы должны определить размер, распределенный на первом месте.  Если переменная является нулевой (nil), тогда ничто не происходит.  Если переменная неправильно указывает на память (возможно она уже была освобождена), то выбрасывается исключениеEInvalidPointer.  Если память содержит ссылки на переменные основанные на памяти, то вы должны вызвать Finalizeперед FreeMemFreeMem - противоположная GetMemкоманда.  Лучше использовать New и Dispose вместо GetMem и FreeMem. Они позволяет избегать потребность вызова Finalize.

21. Стек. Локальные переменные и стек. Параметры процедуры и стек.

Стек (англ. stack — стопка) — структура данных, в которой доступ к элементам организован по принципу LIFO(англ. last infirst out, «последним пришёл — первым вышел»). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю.

Добавление элемента, называемое также проталкиванием (push), возможно только в вершину стека (добавленный элемент становится первым сверху). Удаление элемента, называемое также выталкиванием (pop), тоже возможно только из вершины стека, при этом второй сверху элемент становится верхним.

Стеки широко применяются в вычислительной технике. Например, для отслеживания точек возврата из подпрограммиспользуется стек вызовов, который является неотъемлемой частью архитектуры большинства современныхпроцессоровЯзыки программирования высокого уровня также используют стек вызовов для передачи параметров при вызове процедур.

Арифметические сопроцессоры, программируемые микрокалькуляторы и язык Forth используют стековую модель вычислений.

В ЦВК стек называется магазином — по аналогии с магазином в огнестрельном оружии (стрельба начнётся с патрона, заряженного последним)

22. Списки. Динамическое создание очереди. Приведите примеры.

Динамическое создание списка строк и запись его в файл

// Обработчик события, происходящего при создании формы MainForm

procedure TMainForm.FormCreate(Sender: TObject);

var

// Объявление переменной типа TStrings (список строк).

Strings: TStrings;

begin

// Создание (выделение памяти и заполнение её начальными значениями) объекта типа TStringList.

// TStringList - это потомок TStrings, реализующий его абстрактные методы с целью хранения строк в памяти.

Strings := TStringList.Create;

try

// Добавление строки.

Strings.Add('Добавляемая строка.');

// Сохранение всех строк в файл.

Strings.SaveToFile('C:\Strings.txt');

finally

// Освобождение памяти объекта и очистка ссылки на неё для предотвращения непреднамеренного обращения к не выделенной памяти.

FreeAndNil(Strings);

end;

end;

23. Компоненты работы с базами данных Table, Query, dbGrid, DataSource.

Компонент Table, представленный классом TTable, обеспечивает самый быстрый и простой доступ к таблице. Использования таблиц более чем достаточно для большинства приложений, работающих с одноярусными базами данных. Обычно вы будете использовать компонент Table для локальных баз данных, а компонент Query — для работы с SQL-серверами.

Класс TTable имеет большое количество дополнительных свойств и методов по сравнению со своим предком, TDataSet. В таблице 16.4 перечислены важнейшие свойства компонента ТТаblе, а в таблице 16.5 — методы. Помните, что это свойства и методы, специфичные для ТТаblе; в их число не входят те, которые этот класс наследует от TDataSet.

По большей части смысл свойств и методов ТТаblе интуитивно понятен. Иными словами, вам достаточно взглянуть на имя свойства или метода, чтобы определить его назначение. Не требуется затрачивать больших умственных усилий, чтобы понять, что метод LockTable блокирует таблицу, используемую в приложении, а метод UnLockTable снова ее разблокирует. Точно так же, вам не обязательно иметь IQ в 150 единиц, чтобы догадаться о назначении методов CreateTable, DeleteTable И RenameTable. По этой Причине я не собираюсь подробно рассматривать все свойства и методы, перечисленные здесь. Вместо этого давайте остановимся на некоторых более интересных аспектах компонента Table.

Использование компонента Query является предпочтительным способом доступа к базам данных клиент/сервер. В этом разделе описаны основные свойства и методы класса TQuery.

Компонент Query, в отличие от компонента Table, не имеет свойства TableName Это означает, что во время проектирования вы не можете увидеть список таблиц текущей базы данных Для просмотра списка таблиц можно сделать одно из двух Во-первых, можно временно поместить на форму компонент Table и установить его свойство DatabaseMame, после чего список свойства TableName будет содержать доступные таблицы Во-вторых, можно выделить компонент Query на форме, щелкнуть на нем правой кнопкой мыши и выбрать в контекстном меню пункт Explore Вы окажетесь либо в SQL Explorer (версия Client/Server), либо в администраторе BDE (версии Standard и Professional) Для просмотра таблиц базы данных можно использовав любой из этих инструментов

Компонент DataSource обеспечивает механизм для связи компонентов доступа к данным (Table, Query или StoredProc) с визуальными компонентами, которые отображают данные (DBGrid, DBEdit, DBListBox и т. д.). Основное назначение DataSource состоит в том, чтобы облегчить внесение изменений в приложения. Все визуальные компоненты данных на форме связаны с DataSource, который, в свою очередь, связан с набором данных.

Поскольку компоненты данных не обращаются напрямую к набору данных, вы можете с легкостью менять наборы данных без необходимости каждый раз устанавливать связи со всеми компонентами формы. Например, для замены набора данных с Table на Query вам достаточно лишь изменить свойство DataSet компонента DataSource.

TDataSource имеет очень мало свойств. Как вы уже видели, свойство Data-Set используется для связи DataSource с набором данных. Свойство Enabled определяет, будут ли интерфейсные компоненты, связанные с DataSource, отображать данные. Когда это свойство имеет значение True, данные отображаются. В противном случае компоненты отображения данных остаются пустыми.

Методы TDataSource по большей части несущественны, поэтому я не буду их здесь рассматривать. Событие OnDataChange генерируется при перемещении курсора с редактировавшейся записи на любую другую. Событие OnStateChange происходит в момент изменения состояния набора данных (например, когда пользователь переключается из режима редактирования в режим просмотра).

Компонент TDBGrid обеспечивает табличный способ отображения на экране строк данных из компонентов TTable или TQuery. Приложение может использовать TDBGrid для отображения, вставки, уничтожения, редактирования данных БД. Обычно DBGrid используется в сочетании с DBNavigator, хотя можно использовать и другие интерфейсные элементы, включив в их обработчики событий методы First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel компонента TTable.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]