Читаем Советы по Delphi. Версия 1.0.6 полностью

--

*)

unit DynArray;

INTERFACE

uses SysUtils;

Type TDynArrayBaseType = double;

Const vMaxElements  =  (High(Cardinal) – $f) div sizeof(TDynArrayBaseType);

{= гарантирует максимально возможный массив =}

Type

 TDynArrayNDX     =  1..vMaxElements;

 TArrayElements   =  array[TDynArrayNDX] of TDynArrayBaseType;

 {= самый большой массив TDynArrayBaseType, который мы может объявить =}

 PArrayElements   =  ^TArrayElements;

 {= указатель на массив =}


 EDynArrayRangeError  =  CLASS(ERangeError);


 TDynArray  =  CLASS

 Private

  fDimension: TDynArrayNDX;

  fMemAllocated: word;

  Function  GetElement(N: TDynArrayNDX): TDynArrayBaseType;

  Procedure SetElement(N: TDynArrayNDX; const NewValue: TDynArrayBaseType);

 Protected

  Elements : PArrayElements;

 Public

  Constructor Create(NumElements : TDynArrayNDX);

  Destructor Destroy; override;

  Procedure Resize(NewDimension : TDynArrayNDX); virtual;

  Property dimension: TDynArrayNDX read fDimension;

  Property Element[N : TDynArrayNDX] : TDynArrayBaseType read GetElement write SetElement; default;

 END;


Const

 vMaxMatrixColumns = 65520 div sizeof(TDynArray);

 {= построение матрицы класса с использованием массива объектов TDynArray =}


Type

 TMatrixNDX  =  1..vMaxMatrixColumns;

 TMatrixElements  =  array[TMatrixNDX] of TDynArray;

 {= каждая колонка матрицы будет динамическим массивом =}

 PMatrixElements  =  ^TMatrixElements;

 {= указатель на массив указателей… =}

 TDynaMatrix  =  CLASS

 Private

  fRows          : TDynArrayNDX;

  fColumns       : TMatrixNDX;

  fMemAllocated  : longint;

  Function GetElement(row: TDynArrayNDX; column: TMatrixNDX): TDynArrayBaseType;

  Procedure SetElement(row: TDynArrayNDX; column: TMatrixNDX; const NewValue: TDynArrayBaseType);

 Protected

  mtxElements: PMatrixElements;

 Public

  Constructor Create(NumRows : TDynArrayNDX; NumColumns : TMatrixNDX);

  Destructor Destroy; override;

  Property rows: TDynArrayNDX read fRows;

  Property columns: TMatrixNDX read fColumns;

  Property Element[row : TDynArrayNDX; column : TMatrixNDX] : TDynArrayBaseType read GetElement write SetElement; default;

 END;


IMPLEMENTATION

(*

 --

 --  методы TDynArray

 --

*)

Constructor TDynArray.Create(NumElements : TDynArrayNDX);

BEGIN   {==TDynArray.Create==}

 inherited Create;

 fDimension:= NumElements;

 GetMem(Elements, fDimension*sizeof(TDynArrayBaseType));

 fMemAllocated:= fDimension*sizeof(TDynArrayBaseType);

 FillChar(Elements^, fMemAllocated, 0);

END;    {==TDynArray.Create==}


Destructor TDynArray.Destroy;

BEGIN   {==TDynArray.Destroy==}

 FreeMem(Elements, fMemAllocated);

 inherited Destroy;

END;    {==TDynArray.Destroy==}


Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

Программирование, программы, базы данных
C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных