TypeTStrItem = String[39]; { 39 символов + байт длины -> 40 байтов }TDataArray= Array [0..7, 0..24] of TStrItem; ConstData : TDataArray = (('..', ...., '..' ), { 25 строк на строку }... { 8 таких строк }('..', ...., '..' )); { 25 строк на строку } |
Данные размещаются в вашем сегменте данных и занимают в нем 8K. Если это слишком много для вашего приложения, поместите реальные данные в ресурс RCDATA. Следующие шаги демонстрируют данный подход. Создайте небольшую безоконную программку, объявляющую типизированную константу как показано выше, и запишите результат в файл на локальный диск:
|
Program MakeData;TypeTStrItem = String[39]; { 39 символов + байт длины -> 40 байтов }TDataArray= Array [0..7, 0..24] of TStrItem; ConstData : TDataArray = (('..', ...., '..' ), { 25 строк на строку }... { 8 таких строк }('..', ...., '..' )); { 25 строк на строку } VarF: File of TDataArray;BeginAssign( F, 'data.dat' );Rewrite(F);Write(F, Data);Close(F);End. |
Теперь подготовьте файл ресурса и назовите его DATA.RC. Он должен содержать только следующую строчку:
DATAARRAY RCDATA "data.dat" Сохраните это, откройте сессию DOS, перейдите в каталог где вы сохранили data.rc (там же, где и data.dat!) и выполните следующую команду:
brcc data.rc (brcc32 для Delphi 2.0) Теперь вы имеете файл data.res, который можете подключить к своему Delphi-проекту. Во время выполнения приложения вы можете генерировать указатель на данные этого ресурса и иметь к ним доступ, что и требовалось.
{ в секции interface модуля }TypeTStrItem = String[39]; { 39 символов + байт длины -> 40 байтов }TDataArray= Array [0..7, 0..24] of TStrItem;PDataArray= ^TDataArray;ConstpData: PDataArray = Nil; { в Delphi 2.0 используем Var } Implementation{$R DATA.RES} Procedure LoadDataResource;VardHandle: THandle;Begin{ pData := Nil; если pData - Var }dHandle := FindResource( hInstance, 'DATAARRAY' , RT_RCDATA );If dHandle <> 0 Then Begindhandle := LoadResource( hInstance, dHandle );If dHandle <> 0 ThenpData := LockResource( dHandle );End;If pData = Nil Then{ неудача, получаем сообщение об ошибке с помощьюWinProcs.MessageBox, без помощи VCL, поскольку здесь кодвыполняется как часть инициализации программы и VCLвозможно еще не инициализирован! }End; InitializationLoadDataResource;End. |
Теперь вы можете ссылаться на элементы массива с помощью синтаксиса pData^[i,j].
- Peter Below [000964]