Среда, 15.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нашли свой исходник?
Всего ответов: 94
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » Разное

Хранение данных в EXE-файле

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

Type
 TStrItem = String[39]; { 39 символов + байт длины -> 40 байтов }
 TDataArray = Array [0..7, 0..24] of TStrItem;

Const
 Data: TDataArray = (
 ('..', ...., '..' ), { 25 строк на строку }
 ... { 8 таких строк }
 ('..', ...., '..' )); { 25 строк на строку }

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

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

{ в секции 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

Получить ссылку на материал

Категория: Разное | Добавил: Барон (08.12.2011)
Просмотров: 999 | Теги: EXE | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования