Следующая статья: Ошибка при добавлении или изменении записей.
Можно включить любой тип данных как RCDATA или пользовательский тип ресурса. Это очень просто. Данный совет поясняет общую технику создания такого ресурса.
type TStrItem=String[39];
// 39 символов+байт длины -> 40 байт
TDataArray=array [0..7, 0..24] of TStrItem;
const Data: TDataArray=( ('','', …''),
// 25 строк
// всего 8 таких строк
('','', …'');
// 25 строк
Данные размещаются в вашем сегменте данных и занимают в нем 8 Kбайт. Если этого слишком много для вашего приложения – поместите реальные данные в ресурс 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) и выполните следующую команду:
Теперь можно подключить файл DATA.RES к своему Delphi-проекту. Во время выполнения приложения можно сгенерировать указатель на данные этого ресурса и получить к ним доступ, что и требовалось
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
begin
// неудача, получаем сообщение об ошибке с помощью WinProcs.MessageBox,
// без помощи VCL, поскольку здесь код выполняется
// как часть инициализации программы, и VCL,
// возможно, еще не инициализирована!
end;
end;
initialization
LoadDataResource;
end.