Ошибка: Failed to parse the Currency Converter XML document.
$32 279.67


Ошибка: Failed to parse the Currency Converter XML document.
$2 205.98


Ошибка: Failed to parse the Currency Converter XML document.
$587.16


Сущность ООП

Одна из вещей, которую вы могли бы захотеть реализовать — пользовательский интерфейс, предоставляющий доступ к файлу персональных данных. ООП предоставляет вам безусловно лучшие механизмы для его хранения, создания, и эксплуатации, делая эти вещи понятными и легкими для понимания.

Вот как вы можете сделать это. Забудьте об диалоговом окне хотя бы на минуту и сконцентрируйтесь на создании файла персональных данных. Скажем, вы редактируете запись человека со следующими полями: First Name, Last Name, Age и Active. Скажем, вам нужны следующие операции при работе с записью: добавление, изменение, удаление и построение списка.


Вам необходимо создать невизуальный объект доступа к файлу, инкапсулирующий вышеупомянутую функциональность. Это может выглядеть приблизительно так:

interface

PPersonRecord = ^TPersonRecord;
TPersonRecord = record

  FirstName: string;
  LastName: string;
  Age: Byte;
  Active: Boolean;
end;

TPersonFile = class(TObject)
private

  FFileName: TFileName;
  FFile: file of TPersonRec;
public

  constructor Create(AFileName: TFileName);
  destructor Destroy; override;
  procedure LoadRecord(Index: Integer);

  procedure SaveRecord(Index: Integer);
  procedure Add(NewPersonRecord: TPersonRecord);
  procedure Change(ChangedPersonRecord: TPersonRecord; Index: Integer);
  procedure Delete(Index: Integer);
  procedure List(AStringList: TStringList);
  property Person[Index: Integer]: TPersonRecord read LoadRecord write
    SaveRecord;
end;

implementation

constructor TPersonFile.Create(AFileName: TFileName);
begin

  inherited.Create;
  AssignFile(FFile, AFileName);
  Reset(FFile, SizeOf(TPersonRec));
  New(FPersonRecord);
end;

destructor TPersonFile.Destroy;
begin

  CloseFile(FFile);
  Dispose(FPersonRecord);
  inherited Destroy;
end;

function TPersonFile.LoadRecord(Index: Integer): PPersonRec;
begin

  { позиция файла в точке коррекции для чтения записи }
  { ... }
end;

procedure TPersonFile.SaveRecord(Index: Integer);
begin

  { позиция файла в точке коррекции для записи записи }
  { ... }
end;

procedure TPersonFile.Add(NewPersonRecord: TPersonRecord);
begin

  { файл позиционируется в конец для записи записи }
  { ... }
end;

procedure TPersonFile.Change(ChangedPersonRecord: TPersonRecord; Index:
  Integer);
begin

  { именение TStatus ??? }
  { позиция файла в точке коррекции для записи записи }
  { ... }
end;

procedure TPersonFile.Delete(Index: Integer);
begin

  { изменение TStatus ??? }
  { позиция файла в точке коррекции для записи записи }
  { ... }
end;

procedure TPersonFile.List(AStringList: TStringList);
begin

  { в цикле обходим все записи, пополняя AStringList??? }
end;

OK, я надеюсь вы поняли мою идею. Вышеприведенный код взят мною из головы и, вероятно, несвободен от ошибок,
поскольку я не до конца понял как работает тип file (для доступа к бинарному файлу я использую TFileStream), но идея
следующая: инкапсуляция ваших функций работы с файлом в невизуальный объект как показано выше.

Теперь вы можете начать думать о ваших диалогах. Вам необходимо создать диалог, у которого в обработчике события OnCreate была бы примерно такая строчка кода:

MyPersonFile := TPersonFile.Create(«c:\person.dat»);

Естественно, вам необходим модуль, в котором вы объявляете TPersonFile в секции используемых модулей, а в классе формы необходимо поле с именем MyPersonFile. Вам также необходимо помнить об освобождении MyPersonFile в методе формы onClose. Я думаю вы сообразите как разместить в вашей программе необходимые элементы управления (менюшки, кнопки и прочие причиндалы), хотя бы для того, чтобы с помощью них можно было бы открыть файл.

Теперь вы должны разместить на форме компоненты типа Edit, CheckBox и др., отображающие и позволяющие редактировать поля записи через свойство Record. Убедитесь в том, что вы поддерживаете должный порядок, и освобождаете объект (запись) после его создания и использования. Конечно, эту работу красивой не назовешь, но от нее вас никто еще не освобождал. Вот красота ООП:

*После создания комбинации объект / форма диалога вся работа уже сделана.*

Вот другая хорошая вещь:

*Если вы изменяете ваш пользовательский интерфейс (например, при отказе от кучи диалогов или от использования Delphi (молчу-молчу)), ООП предоставляет вам простой и легкий в использовании способ переноса логики приложения, инкапсулированной в объекте TPersonFile.

 

Интересное

Добавление CSS
Таблицы стилей могут быть добавлены на веб-страницу тремя разными способами, которые различаются по своим возможностям.Таблицы связанных стилейСамый мощный и удобный способ определения стилей и...
Подробнее...
Графический счётчик на PHP
Данный пример демонстрирует работу простого графического счетчика. По функциональности он совершенно идентичен текстовому счетчику.Для работы этого счетчика необходимо создать графическое...
Подробнее...
Обслуживание компьютеров
Выбор компании-аутсорсера. Рано или поздно, но каждая уважающая себя фирма сталкивается с необходимостью пригласить к сотрудничеству аутсорсинговую компанию. Ах, да. Необходимо пояснить, что это...
Подробнее...
Немного о файрволах:...
Вот стоит файрвол, неприступный как скала. Наивный юзер свято верит, что никакой червь, троян или хакер через этот файрвол не перелезет. Фиг там! Файры блокируют лишь единичные вторжения, и шанс...
Подробнее...
Как появляется файловый...
Почему на жестком диске появляется множество ненужных данных? Причин существует множество, но в своем большинстве ненужные файлы являются результатом некорректной, не правильной работы разных...
Подробнее...
Вычисление IP адресов...
Все мы когда-то начинали программирование в сети с простой операции определения IP адреса, принадлежащему нашему компьютеру. Задав такой вопрос в форуме, мы обычно получали очень короткий ответ:...
Подробнее...
Adobe Photoshop и Corel Draw
Уважаемые читатели, что возникает в ваших головах при словосочетании «компьютерная графика»? Конечно, у рядового пользователя сразу возникает в голове какой-нибудь Терминатор или иное детище...
Подробнее...
Проверка e-mail адреса на...
Я уже много раз слышал вопрос: «Как проверить e-mail на существование?». Видел на них много ответов, но во всех было сказано, что проверить никак нельзя, предлагались только обходные пути, такие...
Подробнее...
Smarty – не просто шаблоны
Скажем сразу, этот материал не будет вас учить пользоваться базовыми возможностями данной библиотеки. Напротив, я копну гораздо глубже. Цель этого материала взглянуть на шаблонизатор Smarty с...
Подробнее...
«Продвинутость» в Сети....
Для начала немного статистики. Даже если вы «уже в танке», не мешает лишний раз задуматься над приведенными ниже цифрами. Итак, по данным исследовательской компании «Ромир», во втором квартале...
Подробнее...