Cоздание файлов свойств
Автор: Antalis
Для наглядности опишу полностью вручную создание файлов.
Для этого создадим полностью новый документ, добавим в список используемых модулей OpenGL чтобы использовать ее типы данных (можно и по-другому, но не будем усложнять себе жизнь)
Опишем нужные нам типы данных:
//Свойства объекта
TAPObjectsProperties = record
size:glFloat;
StartX:glFloat;
StartY:glFloat;
moveX:glFloat;
moveY:glFloat;
AccelerationX:glFloat;
AccelerationY:glFloat;
TextureID:GLUint;
end;
//Свойство изображения
TTexturProperties = record
ID:GLUint; //будущий идентификатор текстуры
Name: string[16]; //Название ресурса
TileCountX: Byte; //деление на тайлы п- горизонтали (пока не используем при загрузки
TileCountY: Byte; //деление на тайлы по-вертикали (пока не используем при загрузки
end;
Создадим переменные и файлы данных типов
var
ObjectsProperties:TAPObjectsProperties;
ObjectInfoFile:file of TAPObjectsProperties;
TexturProperties: TTexturProperties;
TexturInfoFile:file of TTexturProperties;
Описываю процедуры создания и записи данных в файлы:
procedure WorkWithObjectFile;
procedure WorkWithTextureFile;
Добавляю на форму 2 кнопки и по их нажатию вызываю данные процедуры. В директории, где находится программа должны появиться нужные нам файлы под названиями: ObjectTest.odf, TexturTest.tdf.
Загрузку из них данных уже опишу в другой статье и в другом примере.
Вот текст программы: (чтобы не засорять качалку выкладывать исходник не буду - его вы можете создать сами)
_________________________________________________________________________________________________
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OpenGL, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
//Свойства объекта
TAPObjectsProperties = record
size:glFloat;
StartX:glFloat;
StartY:glFloat;
moveX:glFloat;
moveY:glFloat;
AccelerationX:glFloat;
AccelerationY:glFloat;
TextureID:GLUint;
end;
//свойства изображения
TTexturProperties = record
ID:GLUint; //будущий идентификатор текстуры
Name: string[16]; //название ресурса
TileCountX: Byte; //деление по-горизонтали изображения на тайлы
TileCountY: Byte; //деление по-вертикали изображения на тайлы
end;
var
ObjectsProperties:TAPObjectsProperties;
ObjectInfoFile:file of TAPObjectsProperties;
TexturProperties: TTexturProperties;
TexturInfoFile:file of TTexturProperties;
//------------------------------------------------------------------------------
procedure WorkWithObjectFile;
begin
//Для наглядности проделаем все в ручную
//Описываю свойства первого объекта
//Можно искользовать директиву with тогда не надо много раз повторять название переменной
ObjectsProperties.size:=0.3;
ObjectsProperties.StartX:=0.0;
ObjectsProperties.StartY:=0.0;
ObjectsProperties.moveX:=0.01;
ObjectsProperties.moveY:=0.01;
ObjectsProperties.AccelerationX:=0.0;
ObjectsProperties.AccelerationY:=0.0;
ObjectsProperties.TextureID:=1;
AssignFile(ObjectInfoFile,'ObjectTest.odf'); //Связываем файловую переменную с файлом, расширение имени из головы (ObjectDataFile)
// {$I-} //Отключаем автоматическую проверку на ошибку
Rewrite(ObjectInfoFile); //Создание и открытие нового файла
// Seek(ObjectInfoFile,0); // Позицию записи в начало
Write(ObjectInfoFile,ObjectsProperties); //Первая запись
//Описываю свойства второго объекта
ObjectsProperties.size:=0.3;
ObjectsProperties.StartX:=0.5;
ObjectsProperties.StartY:=1.0;
ObjectsProperties.moveX:=0.01;
ObjectsProperties.moveY:=0.01;
ObjectsProperties.AccelerationX:=0.0;
ObjectsProperties.AccelerationY:=0.0;
ObjectsProperties.TextureID:=2;
Write(ObjectInfoFile,ObjectsProperties); //Вторая запись
//Описываю свойства третьего объекта
ObjectsProperties.size:=0.3;
ObjectsProperties.StartX:=1.5;
ObjectsProperties.StartY:=1.5;
ObjectsProperties.moveX:=0.01;
ObjectsProperties.moveY:=0.01;
ObjectsProperties.AccelerationX:=0.0;
ObjectsProperties.AccelerationY:=0.0;
ObjectsProperties.TextureID:=3;
Write(ObjectInfoFile,ObjectsProperties); //Третья запись
//Описываю свойства четвертого объекта
ObjectsProperties.size:=0.3;
ObjectsProperties.StartX:=0.75;
ObjectsProperties.StartY:=1.5;
ObjectsProperties.moveX:=0.01;
ObjectsProperties.moveY:=0.01;
ObjectsProperties.AccelerationX:=0.0;
ObjectsProperties.AccelerationY:=0.0;
ObjectsProperties.TextureID:=3;
Write(ObjectInfoFile,ObjectsProperties); //Четвертая запись
CloseFile(ObjectInfoFile); //закрываем файл
end;
//------------------------------------------------------------------------------
procedure WorkWithTextureFile;
begin
//Описываю свойства первого объекта
//Можно искользовать директиву with тогда не надо много раз повторять название переменной
TexturProperties.ID:=1;
TexturProperties.Name:='ufo1';
TexturProperties.TileCountX:=1; //Пока при загрузке не используется
TexturProperties.TileCountY:=1; //Пока при загрузке не используется
AssignFile(TexturInfoFile,'TexturTest.tdf'); //Связываем файловую переменную с файлом, расширение имени из головы (TextureDataFile)
Rewrite(TexturInfoFile); //Создание и открытие нового файла
Write(TexturInfoFile,TexturProperties); //Первая запись
//Описываю свойства второго объекта
TexturProperties.ID:=2;
TexturProperties.Name:='ufo2';
TexturProperties.TileCountX:=1; //Пока при загрузке не используется
TexturProperties.TileCountY:=1; //Пока при загрузке не используется
Write(TexturInfoFile,TexturProperties); //Вторая запись
//Описываю свойства третьего объекта
TexturProperties.ID:=3;
TexturProperties.Name:='ufo3';
TexturProperties.TileCountX:=1; //Пока при загрузке не используется
TexturProperties.TileCountY:=1; //Пока при загрузке не используется
Write(TexturInfoFile,TexturProperties); //Третья запись
CloseFile(TexturInfoFile); //закрываем файл
end;
//Добавил на форму 2 стандартные кнопки, по их нажатию записываем информацию в файлы
//------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
WorkWithObjectFile;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
WorkWithTextureFile;
end;
end.
6 сентября 2006