Содержание материала

 

Вы можете включить любой тип данных как RCDATA или пользовательских тип ресурса. Это очень просто. Данный совет покажет вам общую технику создания такого ресурса.

Code:

Type

TStrItem = String[39];  { 39 символов + байт длины -> 40 байтов }

TDataArray = Array [0..7, 0..24] of TStrItem;

 

Const

Data: TDataArray = (

('..', ...., '..' ),  { 25 строк на строку }

...                   { 8 таких строк }

('..', ...., '..' )); { 25 строк на строку }

 

 

Данные размещаются в вашем сегменте данных и занимают в нем 8K. Если это слишком много для вашего приложения, поместите реальные данные в ресурс RCDATA. Следующие шаги демонстрируют данный подход. Создайте небольшую безоконную программку, объявляющую типизированную константу как показано выше, и запишите результат в файл на локальный диск:

Code:

program MakeData;

type

TStrItem = string[39]; { 39 символов + байт длины -> 40 байтов }

TDataArray = array[0..7, 0..24] of TStrItem;

 

const

Data: TDataArray = (

   ('..', ...., '..'), { 25 строк на строку }

   ... { 8 таких строк }

   ('..', ...., '..')); { 25 строк на строку }

 

var

F: file of TDataArray;

begin

Assign(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-проекту. Во время выполнения приложения вы можете генерировать указатель на данные этого ресурса и иметь к ним доступ, что и требовалось.

Code:

 

{ в секции interface модуля  }

type

TStrItem = string[39]; { 39 символов + байт длины -> 40 байтов }

TDataArray = array[0..7, 0..24] of TStrItem;

PDataArray = ^TDataArray;

const

pData: PDataArray = nil; { в Delphi 2.0 используем Var }

 

implementation

{$R DATA.RES}

 

procedure LoadDataResource;

var

dHandle: THandle;

begin

{ pData := Nil; если pData - Var }

dHandle := FindResource(hInstance, 'DATAARRAY', RT_RCDATA);

if dHandle <> 0 then

begin

   dhandle := LoadResource(hInstance, dHandle);

   if dHandle <> 0 then

     pData := LockResource(dHandle);

end;

if pData = nil then

   { неудача, получаем сообщение об ошибке с помощью

   WinProcs.MessageBox, без помощи VCL, поскольку здесь код

   выполняется как часть инициализации программы и VCL

   возможно еще не инициализирован! }

end;

 

initialization

LoadDataResource;

end.

 

Теперь вы можете ссылаться на элементы массива с помощью синтаксиса pData^[i,j].

 

Автор: Peter Below

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить