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


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


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


Сущность ООП

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

Вот как вы можете сделать это. Забудьте об диалоговом окне хотя бы на минуту и сконцентрируйтесь на создании файла персональных данных. Скажем, вы редактируете запись человека со следующими полями: 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.

 

Интересное

Закачка файла на сервер с PHP
В более поздних версиях есть возможность использовать специальный массив ($http_post_files), но в данном уроке описывается более ранний метод.В нашем примере мы будем использовать следующий код...
Подробнее...
Java-приложение: заглянем...
Чтобы отладить приложение, можно поступить по-разному. Во-первых, можно воспользоваться штатным отладчиком из какого-либо программного пакета. Во-вторых, можно самостоятельно вычислить ошибку...
Подробнее...
Жертва в кроватке или как...
Бывает такое с человеком, бывает. Особенно сильно это проявляется, когда он узнает, что не прикладывая особых усилий он может достичь чего-то значительного. Называется такое «это»...
Подробнее...
Ошибки Windows!
Каждый хочет знать когда на экране его выскакивает ошибка с чем она связана!Код ошибки: 0 (0x0000)Операция выполнена успешно.Код ошибки: 1 (0x0001)Неверная функция.Код ошибки: 2 (0x0002)Системе не...
Подробнее...
Выпуск iPad Mini – роковая...
Первые слухи о намерениях корпорации Apple выпустить новый компактный планшет, цена которого будет составлять не более $299, по всей видимости, становятся вполне настойчивыми, чтобы применить к...
Подробнее...
Перл для чайников от NS
Эту статью я решил написать, после того как узнал насколько сложно «врубиться» во всё, даже если у вас есть под рукой какое либо пособие по PERL. Везде, уже в самом начале, начинают ссылаться на...
Подробнее...
Продвижение сайтов в...
Описание: Продвижение сайтов в поисковых системах и интернет-маркетинг поисковых машин очень актуальны в современном бизнесе для достижения коммерческого успеха. Эта книга — прежде всего...
Подробнее...
Unix+ Samba + ftpd,...
Есть такая проблема: сложно найти ftpd, понимающий перекодировку имен файлов. Если хранить файлы на сервере в koi8, то ftpшник выдает винде крякозябры. Если хранить в CP1251, то ftp не передает...
Подробнее...
Флэшка или чудо будущего...
Могли ли бы мы раньше, при союзе, представить себе то, что устройство размерами меньшее, чем коробок спичек способно уместить в себе картинную галерею, архив деловой переписки или музыкальный...
Подробнее...
Top 10 ошибок конфигурации...
Установить Linux/BSD — не проблема, инсталлятор все сделает за нас, а вот правильно настроить систему, чтобы ее тут же успешно не атаковали хакеры, удается далеко не каждому. Проанализировав...
Подробнее...